2013-05-28 17 views
9

Ich möchte mehrere Dateien mithilfe der tkinter filialialog auswählen und dann diese Elemente zu einer Liste hinzufügen. Danach möchte ich die Liste zu jeder Datei nacheinander verarbeiten.mehrere Dateinamen in tkinter öffnen und die Dateinamen zu einer Liste hinzufügen

#replace.py 
import string 
def main(): 
     #import tkFileDialog 
     #import re 
     #ff = tkFileDialog.askopenfilenames() 
     #filez = re.findall('{(.*?)}', ff) 
     import Tkinter,tkFileDialog 
     root = Tkinter.Tk() 
     filez = tkFileDialog.askopenfilenames(parent=root,title='Choose a file') 

Nun, ich bin in der Lage, mehrere Dateien auswählen, aber ich weiß nicht, wie man diese Dateinamen in der Liste hinzuzufügen. irgendwelche Ideen?

Antwort

11

askopenfilenames gibt einen String statt einer Liste, das Problem in den issue tracker noch offen ist, und die beste Lösung ist so weit splitlist zu verwenden:

import Tkinter,tkFileDialog 

root = Tkinter.Tk() 
filez = tkFileDialog.askopenfilenames(parent=root,title='Choose a file') 
print root.tk.splitlist(filez) 
+0

Danke, das hat mir sehr geholfen. – faraz

+0

In Zeile 4 Ihres Codes hier, was bedeutet 'root'? Ist das das Konsolenfenster, von dem der Benutzer das Skript gestartet hat? – danielcg

+0

@danielcg Nein, es ist ein Name für das oberste (root) Fenster der Tkinter App. Es wird neben der Konsole geöffnet, auf der das Python-Programm ausgeführt wird. –

5
askopenfilenames 

ein Tupel von Strings zurückgibt, nicht ein Faden. einfach zu speichern, die die Ausgabe von askopenfilenames in Filez (wie Sie getan haben) und es auf die Liste Methode der Python übergeben eine Liste zu erhalten.

filez = tkFileDialog.askopenfilenames(parent=root,title='Choose a file') 
lst = list(filez) 

>>> type(lst) 
<type 'list'> 
Verwandte Themen