2017-10-06 3 views
1
>>> a=os.listdir('.') 
>>> a 
['arabic??.exe', 'asd.exe', 'chinese??.exe', 'cyrilic??.exe', 'french\xe7\xe9\xfc.exe', 'german\xe4\xdf\xfc.exe', 'registred\xae\xa9.exe', 'sandbox.py', 'spanish\xc1\xcd\xd3.exe'] 
>>> for each in a: 
... os.system(os.getcwd()+'\\'+each) 
... 
The system cannot find the path specified. 

Ich versuche, einige Dateien mit seltsamen Zeichen zu öffnen, aber der Code oben funktioniert nur für die lateinischen Sprachen. Was kann ich tun, um die korrekte Kodierung für alle Dateien zu erhalten und sie richtig zu öffnen? oder wenn es einen Workaround dafür gibt?Python: Wie bekomme ich die richtige Codierung von einem Dateinamen

Randbemerkung, dass die obige Logik funktioniert gut auf Linux-Systemen.

Dateinamen: cyrilicЧБ; chinese 伊艾; frenchçéü; شص arabicum; spanishÁÍÓ.exe; registred® © .exe; germanäßü.exe

Antwort

0

Works, wenn Sie den Verzeichnispfad als Unicode-String, zB:

os.listdir(u'.') 

Edit # 0:

Sie müssen Ihrem Python-Skript auch die folgende Kopfzeile hinzufügen:

Hier können Sie mehr über diese Zeilen lesen: https://www.python.org/dev/peps/pep-0263/

+0

es gibt mir diese Fehlermeldung, wenn ich es als Unicode passieren: Traceback (jüngste Aufforderung zuletzt): File "", Zeile 2, in UnicodeEncodeError: ‚ascii 'Codec kann nicht Zeichen in Position codieren 41-42: ordinal nicht in Reichweite (128) Wenn ich es als Byte lassen es zumindest die Argumente an die os.system geht – xRow

+0

Haben Sie die Codierung für Ihre Python-Skript-Datei angeben ? Bitte überprüfen Sie die aktualisierte Antwort. ja – schaazzz

+0

habe ich versucht, mit der Codierung Linie, auch die Namen mit .encode (sys.getfilesystemencoding zu kodieren versucht(), aber es macht keinen sichtbaren Unterschied und ich bin ein bisschen hier stecken, danke für die Hilfe trotzdem. – xRow

Verwandte Themen