Hi Zusammen,
ich habe folgendes Problem, was ich einfach nicht gelöst bekomme:
Folgender String ist in der Variablen file gespeichert:
file = "K:\Deluxe Music HD\2021-04-20\1618929600000-1618929900000.mp4"
Mein Problem ist nun, dass diese String \202 (u.a.) als unicode interpretiert wird und den Pfad verändert.
Ich hätte keine Probleme, wenn ich einfach ein r".." davor schreiben könnte:
r"K:\Deluxe Music HD\2021-04-20\1618929600000-1618929900000.mp4"
Da ich den String in mehreren Funktionen zusammenbaue, geht das aber so nicht.
Versucht habe ich bereits:
encode/decode('string-escape')
.replace('\', "\\" u.a.)
os.path.join(....)
...
Nichts funktioniert so, wie ich das brauchen würde. Der String soll wie mit r'' ausgewertet werden.
Da ich nach langer Suche bisher nichts gefunden habe, würde ich gerne hier nach einer einfachen Lösung dieses trivialen Problems fragen.
Besten Dank,
m.g.o.d
raw string für Variable?
- __blackjack__
- User
- Beiträge: 14030
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@m.g.o.d: Du kannst einfach ein r davor schreiben. Wenn das nicht geht machst Du irgend etwas anderes falsch. In Code den wir nicht kennen.
Zum zusammensetzen von Pfadteilen verwendet man das `pathlib`-Modul.
Zum zusammensetzen von Pfadteilen verwendet man das `pathlib`-Modul.
„A life is like a garden. Perfect moments can be had, but not preserved, except in memory. LLAP” — Leonard Nimoy's last tweet.
- noisefloor
- User
- Beiträge: 4187
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
normalerweise sollte das alles kein Problem sein, wenn du konsequent das `pathlib` Modul zum Zusammenbauen benutzt. Da du aber keinen Code zeigst sondern "nur" das nicht funktionierende Ergebnis, kann man da sonst wenig zu sagen.
Gruß, noisefloor
normalerweise sollte das alles kein Problem sein, wenn du konsequent das `pathlib` Modul zum Zusammenbauen benutzt. Da du aber keinen Code zeigst sondern "nur" das nicht funktionierende Ergebnis, kann man da sonst wenig zu sagen.
Gruß, noisefloor
Hi Zusammen,
danke für die Antworten. Also hier meine Funktion:
diese os.path.join() Funktion scheint bei manchen Pfaden das Problem zu sein, falls diese eben irgend eine Unicode Bedeutung haben...
Ich Übergebe der Funktion einen String als videopath:
K:\Deluxe Music
und das erg sieht dann in etwa so aus, was in machen Fällen eben zu meinem Problem wird:
K:\Deluxe Music\20042021\
müsste ich den String dann zu bytes codieren? Da die Strings aus os.listdir() kommen, kann ich da nirgends ein r"..." setzen.
danke für die Antworten. Also hier meine Funktion:
Code: Alles auswählen
def build_path(self, videopath):
""" search for the latest directory """
files = os.listdir(videopath)
paths = [os.path.join(videopath, basename) for basename in files]
erg = max(paths, key=os.path.getctime)
return erg
Ich Übergebe der Funktion einen String als videopath:
K:\Deluxe Music
und das erg sieht dann in etwa so aus, was in machen Fällen eben zu meinem Problem wird:
K:\Deluxe Music\20042021\
müsste ich den String dann zu bytes codieren? Da die Strings aus os.listdir() kommen, kann ich da nirgends ein r"..." setzen.
Okay. Folgende Funktion erhält den besagten Pfad als String:
Folgender Fehler wird NUR AB UND ZU geworfen:
2021-04-20 16:45:13,758 - ERROR - NoneType for: K:\Deluxe Music HD\2021-04-20\1618929600000-1618929900000.mp4
Traceback (most recent call last):
File "GraphicAlarmMachine.py", line 325, in run
TypeError: cannot unpack non-iterable NoneType object
Das NoneType tritt durch media_info auf, die eben auf den Pfad aufsetzt...und da es eben nur manchmal auftriff, dachte ich an ein Problem im Pfad. Das video ist tatsächlich ladbar, wenn ich den String mit r"K:\Deluxe Music HD\2021-04-20\1618929600000-1618929900000.mp4" testweise einlade. Ohne r".." wird ein Fehler zurückgegeben.
Folgender Fehler wird dann ausgegeben:
File "c:\Users\svcgam\Desktop\testung.py", line 269, in <module>
video_metadata_test(x)
File "c:\Users\svcgam\Desktop\testung.py", line 54, in video_metadata_test
media_info = MediaInfo.parse(path)
File "C:\Users\svcgam\AppData\Local\Programs\Python\Python39\lib\site-packages\pymediainfo\__init__.py", line 484, in parse
raise FileNotFoundError(filename)
FileNotFoundError: K:\Deluxe Music HD1-04-20q8929600000-1618929900000.mp4
Code: Alles auswählen
def video_metadata(self, video_name):
""" used for LON to grap clipduration and return it as timedelta obj and FPS. """
try:
media_info = MediaInfo.parse(video_name)
for track in media_info.tracks:
clip_dur = track.other_duration[4][:8]
# Convert Duration to datetime object
clip_dur_datetime = datetime.strptime(clip_dur, "%H:%M:%S")
# Convert into timedelta
clip_dur_timedelta = dt.timedelta(hours=clip_dur_datetime.hour, minutes=clip_dur_datetime.minute, seconds=clip_dur_datetime.second)
# Convert timedelta object in fps
max_frames_sec = clip_dur_timedelta.total_seconds()
max_frames_total = int(max_frames_sec) * 25
if clip_dur_timedelta != None:
return clip_dur_timedelta, max_frames_total
2021-04-20 16:45:13,758 - ERROR - NoneType for: K:\Deluxe Music HD\2021-04-20\1618929600000-1618929900000.mp4
Traceback (most recent call last):
File "GraphicAlarmMachine.py", line 325, in run
TypeError: cannot unpack non-iterable NoneType object
Das NoneType tritt durch media_info auf, die eben auf den Pfad aufsetzt...und da es eben nur manchmal auftriff, dachte ich an ein Problem im Pfad. Das video ist tatsächlich ladbar, wenn ich den String mit r"K:\Deluxe Music HD\2021-04-20\1618929600000-1618929900000.mp4" testweise einlade. Ohne r".." wird ein Fehler zurückgegeben.
Folgender Fehler wird dann ausgegeben:
File "c:\Users\svcgam\Desktop\testung.py", line 269, in <module>
video_metadata_test(x)
File "c:\Users\svcgam\Desktop\testung.py", line 54, in video_metadata_test
media_info = MediaInfo.parse(path)
File "C:\Users\svcgam\AppData\Local\Programs\Python\Python39\lib\site-packages\pymediainfo\__init__.py", line 484, in parse
raise FileNotFoundError(filename)
FileNotFoundError: K:\Deluxe Music HD1-04-20q8929600000-1618929900000.mp4
- __blackjack__
- User
- Beiträge: 14030
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@m.g.o.d: Ja, das ist doch aber ein anderer Fehler als der den Du bekommst. Wenn ich mal raten müsste: Du lässt Dir in `build_path()` den Dateinamen/Pfad für die neueste Datei geben. Das es die Datei gibt, heisst nicht, dass sie schon vollständig geschrieben wurde, und wenn das nicht der Fall ist, dann funktioniert das auslesen der Videoeigenschaften nicht.
„A life is like a garden. Perfect moments can be had, but not preserved, except in memory. LLAP” — Leonard Nimoy's last tweet.
Danke sehr! Ja das macht tatsächlich Sinn und ich habe daran tatsächlich nicht gedacht__blackjack__ hat geschrieben: Dienstag 20. April 2021, 22:21 @m.g.o.d: Ja, das ist doch aber ein anderer Fehler als der den Du bekommst. Wenn ich mal raten müsste: Du lässt Dir in `build_path()` den Dateinamen/Pfad für die neueste Datei geben. Das es die Datei gibt, heisst nicht, dass sie schon vollständig geschrieben wurde, und wenn das nicht der Fall ist, dann funktioniert das auslesen der Videoeigenschaften nicht.
