Seite 1 von 1

RAW string in os.path

Verfasst: Sonntag 12. Januar 2020, 20:57
von Ernie1412
ich möchte aus einem QTtextWidgets gelesene daten an os.path übergeben um damit was zu laden.
datei.mp4 hab ich im TextWidget ausgewählt und möchte die Laden bzw datei Infos erhalten.
nur ich kriege das nicht hin aus dem currentItem ein raw string zu machen
hat einer ein Tip für mich ?
normpath geht nicht bzw .os hat die funktion nicht
r"...." geht auch nicht
habs schon mit .format("raw",datei) versucht.
als copy/paste geht es per Print(datei)
aber die "datei" variable mag os.path nicht

Danke

Re: RAW string in os.path

Verfasst: Sonntag 12. Januar 2020, 21:12
von __deets__
Ich habe dir dazu schon was in deinem anderen Thread gesagt. RAW strings sind nicht was du glaubst was sie sind und haben mit dem Problem hier nichts zu tun.

Gibt es Fehlermeldungen die du bekommst? Wie genau sehen die aus?

Re: RAW string in os.path

Verfasst: Sonntag 12. Januar 2020, 21:50
von Ernie1412
Traceback (most recent call last):
File "c:/Users/wkuh/Documents/Python/MeinProgramm/Ordner_Ausgabe.py", line 76, in lWdgPressed
self.FileDetails(DIR+"\\"+ mp4file)
File "c:/Users/wkuh/Documents/Python/MeinProgramm/Ordner_Ausgabe.py", line 125, in FileDetails
AFile = AFolder.ParseName(os.path.basename(mp4file))
AttributeError: 'NoneType' object has no attribute 'ParseName'

beim 1. Post hab ich nicht gesehen das man nochmal draufschaut bis es tatsächlich raus ist.
dachte ich hätte es nicht gesendet

naja .os will doch ein raw string haben.
wenn ich mp4file=r"C:\\video.mp4" mache gehts
hab ich den gleichen ausdruck aus einem TextWidget gehts nicht
hab schon überlegt alles was ich in einem DIR hab in einer Matrix Variablen datei zu packen mit Dateigröße usw.
anstatt wie jetzt in einem TextWidget

Re: RAW string in os.path

Verfasst: Sonntag 12. Januar 2020, 22:19
von __deets__
Dein Fehler ist aber doch ein ganz anderer. AFolder ist None. Keine Ahnung woher das kommt. Aber was für restliche Argumente da übergeben werden ist in dem Moment eh irrelevant.

Und woher bitte hast du “os will einen raw string haben “? Das stimmt schlicht nicht. Nur weil man unter Windows wegen der \ als Pfadtrenner gerne raw strings benutzt wenn man Pfade hinschreibt - dann sind das am Ende immer noch ganz normale strings. Es gibt keine raw strings zur Ausführung- nur beim parsen von Quellcode.

Re: RAW string in os.path

Verfasst: Sonntag 12. Januar 2020, 22:28
von Ernie1412
r=raw meine Idee
nur wenn ich das mit r"bla.mp4" übergebe ladet er es
aber sobald ich das aus ein texWigdet habe gehts nicht

import os
import win32com.client
from pathlib import Path


def GetID3Tags(mp3file):

TheShell = win32com.client.gencache.EnsureDispatch('Shell.Application',0)
AFolder = TheShell.NameSpace(os.path.dirname(mp3file))
AFile = AFolder.ParseName(os.path.basename(mp3file))


print ("Artist Name : " + AFolder.GetDetailsOf(AFile,0))
print ("Album : " + AFolder.GetDetailsOf(AFile,1))

DIR=r'bla.mp4'
GetID3Tags(DIR)

so gehts
aber wie gesagt nicht aus einem Widgets
da kann ich mit replace alles genau so machen wie gewünscht

Re: RAW string in os.path

Verfasst: Sonntag 12. Januar 2020, 22:33
von __deets__
Hast du dir mal ausgeben lassen, was der wirkliche Inhalt von mp3file ist? Und das Ergebnis von dirname darauf?

Abgesehen davon das man id3 tags in Python auch leichtgewichtiger extrahieren kann.

Re: RAW string in os.path

Verfasst: Sonntag 12. Januar 2020, 22:40
von Ernie1412
ja hab ich
ist für meine mp4 sammlung
er listet mir die filedetails wie spieldauer Bildhöhe und breite usw. aus
wens klappen würde nur. ist ja recht wenig code
ich finde da mediainfo viel zu kompliziert oder dieses exiftool

Re: RAW string in os.path

Verfasst: Sonntag 12. Januar 2020, 22:44
von __deets__
Ich glaube du hast mich missverstanden. Du GLAUBST in der variable mp3file steht das gleiche wie der hardkodierte String. Ich bezweifele das. Was also ist der wirklich Inhalt dieser Variable? Das hat nichts mit dem mp3 file selbst zu tun.

Re: RAW string in os.path

Verfasst: Sonntag 12. Januar 2020, 22:51
von Ernie1412
Datei wurde als Modul aufgerufen
Ich stehe in der Datei: DB
D:/Filme\Nomis - Die Nacht des Jägers (2018).mp4
Traceback (most recent call last):
File "c:/Users/wkuh/Documents/Python/MeinProgramm/Ordner_Ausgabe.py", line 78, in lWdgPressed
self.FileDetails(mp4file)
File "c:/Users/wkuh/Documents/Python/MeinProgramm/Ordner_Ausgabe.py", line 126, in FileDetails
AFolder = TheShell.NameSpace(os.path.normpath().dirname(mp4file))
TypeError: normpath() missing 1 required positional argument: 'path'

jetzt kommt ne andere fehlermeldung, weil ich gerade am testen bin.

Re: RAW string in os.path

Verfasst: Sonntag 12. Januar 2020, 22:55
von __deets__
Das ist immer noch nicht worum ich dich gebeten habe. Ein simples print(mp3file) vor der Verwendung mit dirname etc genügt.

Re: RAW string in os.path

Verfasst: Sonntag 12. Januar 2020, 22:56
von __deets__
Ach so, das normpath ist so kompletter Unfug. Das muss ein Argument bekommen. Und nicht per Salzstreuer in den Code eingebracht werden.

Re: RAW string in os.path

Verfasst: Sonntag 12. Januar 2020, 23:18
von Ernie1412
D:/Filme\Nomis - Die Nacht des Jägers (2018).mp4

Re: RAW string in os.path

Verfasst: Sonntag 12. Januar 2020, 23:52
von __deets__
Das sieht wegen der Mischung der slashes komisch aus. Woher kommt das?

Re: RAW string in os.path

Verfasst: Montag 13. Januar 2020, 00:20
von Ernie1412
for root,dir,files in os.walk(dname): dname = DIRECTORY
for filename in files:

root = /
wenn ich root (= DIRectory ) und filesname mit os.pash.join zuzammenfüge kommt das bei rum
join = \ aber nur zwischen root und filename

Re: RAW string in os.path

Verfasst: Montag 13. Januar 2020, 00:31
von __deets__
Das ist alles kein Code, sondern irgendwas verhackstücktes. Damit kann man nichts anfangen. Deine ursprüngliche Frage ist beantwortet - es gibt keine Umwandlung in raw strings. Dein Code erzeugt einfach nicht den Pfad, den du denkst das du ihn hast. Der Fehler liegt also irgendwo anders. Wenn du da weiter Hilfe willst, wirst du dich mehr ins Zeug legen müssen. Mit echtem Code, in den dazugehörigen Tags, mit dazugehörigen Fehlermeldungen.

Re: RAW string in os.path

Verfasst: Montag 13. Januar 2020, 06:36
von sparrow
@Ernie1412: Variablen- und Funktionsnamen schreibt man in Python klein_mit_unterstrich. Die Namen von Klassen CamelCase. Die von dir verwendete Schreibweise von Variablen, insbesondere mit einem sinnfreien "The" oder "A" vorweg, ist für den Leser nur verwirrend.

Ich würde eine entsprechende Bibliothek einsetzen um die Tags auszulesen.

Re: RAW string in os.path

Verfasst: Montag 13. Januar 2020, 10:03
von /me
Es scheint auch noch nicht angekommen zu sein, dass raw-strings eine reine Schreibweise im Python-Sourcecode sind.

Code: Alles auswählen

>>> '\\\u00fc' == '\\ü' == r'\ü'
True
Intern ist das für Python alles identisch.