2016-08-12 7 views
1

Ich bin ein neuer Benutzer für Python.wie übergeben askopenfilename() Rückgabewert als Parameter für die integrierte Python-Funktion öffnen

filename = askopenfilenames() Dies fordert den Benutzer auf, eine Datei auszuwählen Ich möchte file_selection = open(filename, "r") mit der oben ausgewählten Datei verwenden.

Das Problem, das ich in laufen lasse, ist, dass wenn Sie die askopenfilenames() (glaube ich) die Zeichenfolge von () daher der offene Befehl umgeben funktioniert nicht. Kann mir bitte jemand dabei helfen?

EDIT: Wenn ich versuche, und ersetzen: filename.replace (" """) ich Fehlermeldung: Attribute: 'tuple' Objekt kein Attribut 'ersetzen'

+0

Mögliche Duplikat [Parsen die Ergebnisse der askopenfilenames()?] (Http://stackoverflow.com/questions/4116249/parsing-the-results-of-askopenfilenames) – cdarke

+0

Scheint so, als hätten sie nichts herausgefunden –

+0

Kannst du bestätigen, welches Betriebssystem und welche Version von Python bitte? – cdarke

Antwort

2

askopenfilenames() den Benutzer erlaubt, um mehrere Dateien auszuwählen; Daher gibt es ein Tupel aller ausgewählten Dateinamen zurück.

Wenn Sie wollen, dass der Benutzer erlauben, um mehrere Dateien auszuwählen, wiederholen nur das zurückgegebene Tupel über:

filenames = askopenfilenames() #filenames is a tuple of strings! 
for filename in filenames: 
    with open(filename, "r") as f: 
     #Do stuff with open file f. 

Wenn Sie der Benutzer auswählen nur eine Datei zulassen möchten, schauen Sie in askopenfilename().

filename = askopenfilename() #filename is a string! 
with open(filename, "r") as f: 
    #do stuff with open file f 

Auch gibt es Methoden askopenfile() und askopenfiles(), die die gleiche Sache wie askopenfilename() und askopenfilenames() jeweils zu tun, außer, statt Dateinamen zurückzukehren, kehren sie geöffnete Dateien zum Lesen.

f = askopenfile() #f is an open file. 
#do stuff with f 
f.close() 

und

open_files = askopenfiles() #open_files is a tuple of open files. 
for f in open_files: 
    #do stuff with f 
    f.close() 
+0

Joe, vielen Dank für die Informationen. Ich mache eine GUI und möchte, dass der Benutzer 1 oder sogar mehrere Dateien auswählt. Ich möchte dann, dass das Programm die Datei (en) liest und den Inhalt der Datei anzeigt (z. B. Firmennamen) und alle Namen aus allen Dateien auf die GUI legt. –

+0

Wenn sie eine einzelne Datei mit dem askopenfilename auswählen () Befehl, und das wird als String gespeichert, muss ich alles entfernen, bevor Sie die Variable eingeben, die eine Zeichenfolge in den Befehl zum Öffnen ist? –

+0

In diesem Fall würde ich die erste oder letzte Option verwenden. Hinweis: Wenn Sie die letzte Option verwenden, um den vollständigen Namen einer geöffneten Datei 'f' zu erhalten, verwenden Sie' f.name'. Um eine geöffnete Datei zu lesen, verwenden Sie 'f.read()' (gibt eine Zeichenfolge zurück). Vielleicht könnten Sie ein Wörterbuch benutzen; Die Schlüssel sind die Dateinamen und die Werte sind die jeweiligen Dateiinhalte. Das ist nur eine Möglichkeit. – Joe

Verwandte Themen