Открыть несколько имен файлов в tkinter и добавить имена файлов в список

что я хочу сделать, это выбрать несколько файлов используя tkinter filedialog а затем добавьте эти элементы в список. После этого я хочу использовать список для обработки каждый файл по одному.

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

Теперь я могу выбрать несколько файлов, но я не знаю, как добавить эти имена файлов в список. любые идеи?

Ответ 1

askopenfilenames возвращает строку вместо списка, эта проблема по-прежнему открыта в трекер ошибок, и наилучшим решением на данный момент является для использования splitlist:

import Tkinter,tkFileDialog

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

Ответ 2

askopenfilenames

возвращает кортеж строк, а не строку. Просто сохраните вывод askopenfilenames в filez (как вы это сделали) и передайте его в метод python list, чтобы получить список.

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

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

Ответ 3

Соединение частей решения сверху вместе с несколькими строками для защиты от ошибок кода для диалогового окна выбора файла tkinter (как я также описал здесь).

import tkinter as tk
from tkinter import filedialog
root = tk.Tk()
root.withdraw()
root.call('wm', 'attributes', '.', '-topmost', True)
files = filedialog.askopenfilename(multiple=True) 
%gui tk
var = root.tk.splitlist(files)
filePaths = []
for f in var:
    filePaths.append(f)
filePaths

Возвращает список путей к файлам. Может быть stripped, чтобы показывать только фактическое имя файла для дальнейшего использования, используя следующий код:

fileNames = []
for path in filePaths:
    name = path[46:].strip() 
    name2 = name[:-5].strip() 
    fileNames.append(name2)
fileNames

где целые числа (46) и (-5) могут быть изменены в зависимости от пути к файлу.