2016-07-30 3 views
2

Ich habe eine Ordnerstruktur mit 3 Ordner X, Y und Z. Jeder dieser Ordner enthält 3 Dateien X1.csv, X2.csv, X3.csv, Y1.csv, Y2.csv, Y3.csv, Z1.csv, Z2.csv, Z3.csv.Schleife muss Referenzliste von Terminal im Notebook zurückgegeben

In meinem jupyter Notebook ich folgendes tun:

folders = ['X','Y','Z'] 
for f in folders: 
    a = !ls data/X 
    print(a) 

Diese Retruns folgendes:

['X1.csv', 'X2.csv', 'X3.csv'] 
['X1.csv', 'X2.csv', 'X3.csv'] 
['X1.csv', 'X2.csv', 'X3.csv'] 

Ich möchte !ls data/X so ändern, dass es f anstelle der hartcodierte verwendet X aber wenn ich data/X in eine Zeichenkette 'data /' ändere und f bis zum Ende verkette, dann gebe ich nichts zurück.


note

ich os importieren kann und dann listdir verwenden, aber ich frage mich, ob die oben möglich ist.

Antwort

3

Verwenden Sie einfach keine magischen Notebook-Befehle, um etwas zu tun, can be easily done with pure python. Magische Notebook-Befehle sollen für schnelle Hacks und die Unterstützung von Nicht-Python-Funktionalität verwendet werden und nicht als Teil Ihres Codes platziert werden.

Wenn jedoch für ungerade Grund, warum Sie wirklich zu haben, müssen Sie Ihre Variablen mit bash wie Wege ($variable instaed von variable)

folders = ['X','Y','Z'] 
for f in folders: 
    a = !ls data/$f 
    print(a) 
referenzieren
Verwandte Themen