Hallo zusammen
ich schreibe grade an einem skript, welches sich aus einem Ordner eine Liste aus videos nimmt und dann mit einer schleife über eben jene iteriert um z.B. Grauwerte und ähnliches daraus zu ziehen.
Diese grauwerte speichere ich dann über np.savetxt() in einem ordner den ich zuvor über os.makedir() angelegt habe.
Nun ist es so dass dies auch an jeder Stelle meines codes (ausgenommen von einer) funktioniert.
Bei der einen stelle an der das eben nicht funktioniert bekomme ich die Meldung FileNotFound: Errno 2 No such file or directorty.
Der Pfad ist absolut angegeben und es gibt auch durchläufe in denen die funktion tut was sie soll.
Es ist für mich nicht verständlich, dass die Funktion manchmal funktioniert und manchmal nicht, da eine nahezu ähnliche Funktion(nur anderer Pfad) an anderer stelle im skript dieses Problem nicht auslöst
Den Pfad lege ich wie folgt an:
Basispfad=r'C:/Users/Guest/Desktop/Daten/Versuchsreihe/Spalt/Für Auswertung/Auswertung'
Dateiname=str(Variable1 + Variable2)
if not os.path.exists(os.path.join(Basispfad, Dateiname, "Schmelzbadlänge","SchmelzbadlängenHistogramme","SchmelzbadlängenHistogrammeCSV")):
os.makedirs(os.path.join(
Basispfad, Dateiname,"Schmelzbadlänge","SchmelzbadlängenHistogramme","SchmelzbadlängenHistogrammeCSV"))
Das array speichere ich wie folgt: (Filter ist hier eine Variable mit integer,Schmelzbadlängen das array)
np.savetxt(
os.path.join(Basispfad, Dateiname, "Schmelzbadlänge", "SchmelzbadlängenHistogramme","SchmelzbadlängenHistogrammeCSV",
str("SchmelzbadlängeCSV" + Filter + '.csv')), Schmelzbadlängen, fmt='%1.2f', delimiter=",")
Vorab vielen dank für die Hilfe
FileNotFound Error Python
Du solltest dir das Modul "pathlib" anschauen. Das ist das Werkzeug, mit dem man aktuell auf Dateien und Verzeichnissen operiert.
Warum baust du dir denn ständig neu den Pfad zusammen, statt ihn dir zu merken?
Zeuchenketten baut man nicht mit + zusammen sondern verwendet .format oder f-Strings:
Und wenn dein Fehler manchmal auftritt und manchmal nicht, dann hat das ziemlich simplen den Grund: Manchmal ist der Pfad da - und manchmal nicht.
Mehr kann man ohne Code dazu nicht sagen.
Warum baust du dir denn ständig neu den Pfad zusammen, statt ihn dir zu merken?
Zeuchenketten baut man nicht mit + zusammen sondern verwendet .format oder f-Strings:
Code: Alles auswählen
name = "Klaus"
print(f"Hallo {name}")
Mehr kann man ohne Code dazu nicht sagen.
Variablennamen schreibt man generell komplett klein. Konstanten dagegen KOMPLETT_GROSS.
Raw-Strings braucht man nur, wenn man \ nicht escapen will.
Wenn man zwei Strings mit + zusammensetzt bekommt man wieder einen String, den mit str umzuwandeln ist überflüssig.
Es ist komisch, dass ein Dateiname als Verzeichnis vorkommt.
Erst zu Prüfen, ob ein Pfad existiert und ihn dann zu erstellen ist fehlerbehaftet, weil zwischen Prüfung und Erstellen viel passieren kann.
Zum Arbeiten mit Pfaden gibt es pathlib:
Raw-Strings braucht man nur, wenn man \ nicht escapen will.
Wenn man zwei Strings mit + zusammensetzt bekommt man wieder einen String, den mit str umzuwandeln ist überflüssig.
Es ist komisch, dass ein Dateiname als Verzeichnis vorkommt.
Erst zu Prüfen, ob ein Pfad existiert und ihn dann zu erstellen ist fehlerbehaftet, weil zwischen Prüfung und Erstellen viel passieren kann.
Zum Arbeiten mit Pfaden gibt es pathlib:
Code: Alles auswählen
from pathlib import Path
BASIS_PFAD = Path('C:/Users/Guest/Desktop/Daten/Versuchsreihe/Spalt/Für Auswertung/Auswertung')
csv_path = BASIS_PFAD / dateiname / "Schmelzbadlänge" / "SchmelzbadlängenHistogramme" / "SchmelzbadlängenHistogrammeCSV"
csv_path.mkdir(exist_ok=True, parents=True)
np.savetxt(csv_path / f"SchmelzbadlängeCSV{filter}.csv", schmelzbadlängen, fmt='%1.2f', delimiter=",")
-
- User
- Beiträge: 2
- Registriert: Montag 23. Mai 2022, 11:53
Vielen Dank für die schnellen Rückmeldungen, habe mein skript jetzt nochmal mit pathlib aufgebaut (btw. deutlich einfacher und aufgeräumter als vorher, Danke für den Hinweis!).
Das gleiche problem besteht weiterhin. An der gleichen stelle.
Habe vor das np.savetxt() noch
if not os.path.exists(SchmelzbadlängenHistogrammeCSVPfad)
gesetzt um mir ausgeben zu lassen wann der Pfad nicht besteht.
Die komplette Fehlermeldung ist folgende:
Traceback (most recent call last):
File "C:/Users/Guest/Desktop/Pixelauslesen13PATHLIB.py", line 1706, in <module>
ErstellungDesSchmelzbadlängenHistograms(MaxAbkühlungenAllerFilter)
File "C:/Users/Guest/Desktop/Pixelauslesen13PATHLIB.py", line 656, in ErstellungDesSchmelzbadlängenHistograms
np.savetxt(SchmelzbadlängenHistogrammeCSVPfad / f"Schmelzbadlängenhistogramm{Filter}.csv", Schmelzbadlängen, fmt='%1.2f',
File "<__array_function__ internals>", line 180, in savetxt
File "C:\Users\Guest\Desktop\Daten\Skripte\venv\lib\site-packages\numpy\lib\npyio.py", line 1383, in savetxt
open(fname, 'wt').close()
FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\Guest\\Desktop\\Daten\\Versuchsreihe\\Spalt\\Für Auswertung\\Auswertung\\IRfilter+Rotfilter_Default_o4Dreifach-40kfps-23_S0001 - Kopie.mp4_2022-05-23\\Schmelzbadlängen\\SchmelzbadlängenHistogramme\\SchmelzbadlängenHistogrammeCSV\\Schmelzbadlängenhistogramm0.csv'
Liegt es evtl an Numpy oder der Dateibenennung? Der Pfad existiert ja definitiv!
Das gleiche problem besteht weiterhin. An der gleichen stelle.
Habe vor das np.savetxt() noch
if not os.path.exists(SchmelzbadlängenHistogrammeCSVPfad)
gesetzt um mir ausgeben zu lassen wann der Pfad nicht besteht.
Die komplette Fehlermeldung ist folgende:
Traceback (most recent call last):
File "C:/Users/Guest/Desktop/Pixelauslesen13PATHLIB.py", line 1706, in <module>
ErstellungDesSchmelzbadlängenHistograms(MaxAbkühlungenAllerFilter)
File "C:/Users/Guest/Desktop/Pixelauslesen13PATHLIB.py", line 656, in ErstellungDesSchmelzbadlängenHistograms
np.savetxt(SchmelzbadlängenHistogrammeCSVPfad / f"Schmelzbadlängenhistogramm{Filter}.csv", Schmelzbadlängen, fmt='%1.2f',
File "<__array_function__ internals>", line 180, in savetxt
File "C:\Users\Guest\Desktop\Daten\Skripte\venv\lib\site-packages\numpy\lib\npyio.py", line 1383, in savetxt
open(fname, 'wt').close()
FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\Guest\\Desktop\\Daten\\Versuchsreihe\\Spalt\\Für Auswertung\\Auswertung\\IRfilter+Rotfilter_Default_o4Dreifach-40kfps-23_S0001 - Kopie.mp4_2022-05-23\\Schmelzbadlängen\\SchmelzbadlängenHistogramme\\SchmelzbadlängenHistogrammeCSV\\Schmelzbadlängenhistogramm0.csv'
Liegt es evtl an Numpy oder der Dateibenennung? Der Pfad existiert ja definitiv!
Namen schreibt man in Python klein_mit_unterstrich. __deets__ hat dir doch das komplette Rezept gegeben.
Zeig doch bitte, wie du das umsetzt und nicht nur so Häppchenweise. Dass das System sich täuscht und das Verzeichnis da ist, ist ja eherunwahrscheinlich.
Zeig doch bitte, wie du das umsetzt und nicht nur so Häppchenweise. Dass das System sich täuscht und das Verzeichnis da ist, ist ja eherunwahrscheinlich.
- __blackjack__
- User
- Beiträge: 13100
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@Leonidas1501: Kann es an der perversen Länge von dem Pfad liegen? Sind das schon mehr als 260 Zeichen? Und wäre das nicht die maximale Pfadlänge unter Windows‽
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman