2016-03-19 11 views
0

ich habe folgendes Problem bei Datei öffnen: Mit PyQt QFileDialog I-Pfad von Benutzer-Dateien bekommen, die ich esPython-Datei geöffnet vom Pfad mit Zahlen

def read_file(self): 
     self.t_file = (QFileDialog.getOpenFileNames(self, 'Select File', '','*.txt')) 

Leider lesen möchte, kann ich eine Datei nicht öffnen wenn der Pfad hat Zahlen drin: Ex:

'E:\test\02_info\test.txt' 

ich versuchte

f1 = open(self.t_file,'r') 

Kann mir jemand helfen, Dateien aus einem solchen Pfadformat zu lesen? Vielen Dank im Voraus.

EDIT: bekomme ich folgende Fehlermeldung:

Traceback (most recent call last): 
    File "<pyshell#27>", line 1, in <module> 
    f1 = open(self.t_file,'r') 
IOError: [Errno 22] invalid mode ('r') or filename: 'E:\test\x02_info\test.txt' 
+0

Run dieses um zu überprüfen, ob es ein Problem mit dem Pfad ist. Ich glaube, es ist nicht os.path.exists (os.path.abspath (r'E: \ test \ 02_info \ test.txt ')) ' – Muctadir

+0

Welche Version von Windows? von Python? Welche Fehlermeldung? Ich habe die Verzeichnisse '27' und '35' und hatte keine Probleme mit Win 7 und Win 10 mit mehreren Python-Versionen. Das Problem muss etwas anderes sein. –

+0

Ich habe meinen Beitrag mit dem Fehler bearbeitet. Ich benutze Windows 7 und Python 2.7. Nur um das Problem zu überprüfen, habe ich es versucht, wenn ich den Pfad als eine rohe Zeichenfolge habe, und ich kann die Datei öffnen. – sat0408

Antwort

1

Das Problem wird durch die Nutzung von getOpenFileNames verursacht wird, statt getOpenFileName (die eine Liste von Dateien zurückgibt) (die eine einzelne Datei zurückgibt). Sie scheinen auch zu Unrecht den Rückgabewert umgewandelt zu haben, aber da Sie nicht den entsprechenden Code gezeigt haben, werde ich Ihnen zeigen, wie es sollte getan werden (vorausgesetzt, Sie python2 verwenden):

def read_file(self): 
    filename = QFileDialog.getOpenFileName(self, 'Select File', '','*.txt') 
    # convert to a python string 
    self.t_file = unicode(filename) 
+0

Vielen Dank. Das hat mein Problem gelöst – sat0408

Verwandte Themen