Seite 2 von 2
Re: Daten auslesen
Verfasst: Montag 12. Mai 2014, 15:12
von Eisi
for sub_dir in os.listdir(PROJECT_SUB_DIRS)
TypeError: listdir: illegal type for path parameter
vielleicht mit 3.4 nicht kompatibel?
Auch mit dem geänderten der gleiche fehler
Re: Daten auslesen
Verfasst: Montag 12. Mai 2014, 15:19
von snafu
OMG, ich produzier hier voll den Müll...
Es muss ``os.listdir(root_path)`` heißen.
Re: Daten auslesen
Verfasst: Montag 12. Mai 2014, 15:20
von Eisi
halleluja es klappt! Ich bin euch zu großen dank verpflichtet! Jetzt Studiere ich erstmal nochmal alles damit ich es auch nachvollziehen kann was genau nun da passiert

Re: Daten auslesen
Verfasst: Montag 12. Mai 2014, 15:23
von snafu
Na, das ist doch schön. Dein Einwand zu meinem Punkt 2 war übrigens korrekt.
Re: Daten auslesen
Verfasst: Montag 12. Mai 2014, 15:31
von BlackJack
Ich habe halt gemacht was man nicht machen sollte: mehrere Funktionen runterschreiben ohne irgendwas davon auch tatsächlich mal zu testen.

Re: Daten auslesen
Verfasst: Freitag 16. Mai 2014, 16:34
von Eisi
Code: Alles auswählen
def is_project_path(path):
return os.path.isdir(path) and all(
os.path.isdir(os.path.join(path, sub_directory))
for sub_directory in PROJECT_SUB_DIRS
)
woher bekommt in dem script die funktion den wert für "path"? ich studiere gerade nochmal das Script und kann mir nicht zusammenreimen was es mit dem Path auf sich hat.
Re: Daten auslesen
Verfasst: Freitag 16. Mai 2014, 16:44
von BlackJack
@Eisi: Der wird ganz offensichtlich als Argument an die Funktion übergeben.
Re: Daten auslesen
Verfasst: Freitag 16. Mai 2014, 16:45
von jerch
Steht in der Doku zu ``filter``:
https://docs.python.org/3.4/library/fun ... tml#filter
hier:
Note that filter(function, iterable) is equivalent to the generator expression (item for item in iterable if function(item)) if function is not None and (item for item in iterable if item) if function is None.
Re: Daten auslesen
Verfasst: Samstag 17. Mai 2014, 12:15
von Eisi
Wie macht man es wenn man 2 unbekannte in einem Pfad hat?
Beispielpfad: C:\user\project\test1\test2\project2\
Im Ordner Project sind viele ordner mit unbekannten namen die alle durchsucht werden sollen und in project2 soll z.b. die direkt da drin liegende test.txt durchsucht werden. Wobei Project2 auch immer einen anderen namen hat der inhalt aber wieder mit bekannten ordnern und der .txt gefüllt ist. Erstmal befindet sich die gesuchte .txt aber direct in project2 und nicht im unterordner davon.
Re: Daten auslesen
Verfasst: Sonntag 18. Mai 2014, 06:37
von Eisi
Oder gibt es vielleicht einen Befehl der den kompletten Pfad mit unterordnern nach einer datei durchsucht und mir beim finden den pfad ausspuckt?
Re: Daten auslesen
Verfasst: Sonntag 18. Mai 2014, 10:13
von BlackJack
@Eisi: Fertig nicht, aber das lässt sich mit `os.walk()` doch sehr leicht selber schreiben.
Re: Daten auslesen
Verfasst: Sonntag 18. Mai 2014, 10:47
von Eisi
Code: Alles auswählen
for curdir, dirs, files in os.walk(root_path):
if filename in files:
with open(filename, 'r') as lines:
if any(needle in line for line in lines):
print(curdir, dirs, files)
so sieht mein code aus. Und er spuckt immer das aus:
Traceback (most recent call last):
File "E:\python\path.py", line 30, in <module>
with open(filename, 'r') as lines:
FileNotFoundError: [Errno 2] No such file or directory: 'test.txt'
dazu muss man sagen das es keine test.txt beim ausführen ist sondern eine ".NC" datei die ursprünglich von Linux kommt, was aber bisher noch nie ein problem war.
Wenn ich Zeile 3 - 5 weg lasse und ein print als ergebnis ausgeben lasse klappt es.
Re: Daten auslesen
Verfasst: Sonntag 18. Mai 2014, 13:09
von BlackJack
@Eisi: Du musst den Pfad dorthin noch mit `os.path.join()` davor setzen, denn so wie es jetzt ist versuchst Du eine ``test.txt`` im aktuellen Arbeitsverzeichnis des Prozesses zu öffnen.
Re: Daten auslesen
Verfasst: Sonntag 18. Mai 2014, 16:14
von Eisi
wo genau muss denn das os.path.join() hin?
glaube habs jetzt:
Code: Alles auswählen
for curdir, dirs, files in os.walk(root_path):
if filename in files:
with open(os.path.join(curdir, filename), 'r') as lines:
if any(needle in line for line in lines):
print(curdir, dirs, files)