2013-05-28 14 views
9

co chcę zrobić, to wybrać wiele plików przy użyciu tkintera filedialog , a następnie dodać te elementy do listy. Po tym chcę użyć listy do przetwarzania każdego pliku, jeden po drugim.Otwórz wiele nazw plików w tkinter i dodaj nazwy plików do listy

#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') 

Teraz jestem w stanie wybrać wiele plików, ale nie wiem jak dodać te nazwy plików do listy. jakieś pomysły?

Odpowiedz

11

askopenfilenames zwraca łańcuch zamiast listy, że problemem jest wciąż otwarta w issue tracker, a najlepszym rozwiązaniem jakim jest użycie splitlist:

import Tkinter,tkFileDialog 

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

Dzięki, to bardzo pomogło. – faraz

+0

W linii 4 twojego kodu, co oznacza "root"? Czy to jest okno konsoli, z którego użytkownik uruchomił skrypt? – danielcg

+0

@danielcg Nie, jest to nazwa okna najwyższego poziomu (root) aplikacji Tkinter. Otwiera się on obok konsoli, na której uruchamiany jest program Python. –

5
askopenfilenames 

zwraca krotki ciągów, nie ciąg znaków. Po prostu zapisz dane wyjściowe z askopenfilenames w filez (jak to zrobiłeś) i przekaż je do metody pytona, aby uzyskać listę.

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

>>> type(lst) 
<type 'list'> 
Powiązane problemy