在tkinter中打开多个文件名,并将文件名添加到列表中

时间:2013-05-28 10:58:14

标签: python file 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')

现在,我可以选择多个文件, 但我不知道如何将这些文件名添加到列表中。 任何想法?

4 个答案:

答案 0 :(得分:21)

askopenfilenames返回字符串而不是列表,问题仍在issue tracker中打开,目前为止最好的解决方案是使用splitlist

import Tkinter,tkFileDialog

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

答案 1 :(得分:12)

askopenfilenames

返回一个字符串元组,而不是字符串。 只需将 askopenfilenames 的输出存储到filez中(如您所做),并将其传递给python的列表方法以获取列表。< / p>

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

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

答案 2 :(得分:1)

将上述解决方案中的零件与几行内容放在一起,以防错tkinter文件选择对话框的代码(我也描述了here)。

i1

返回文件路径的列表。可以使用以下代码,i2仅显示实际文件名以供进一步使用:

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

其中的整数(46)和(-5)可以根据文件路径进行更改。

答案 3 :(得分:0)

在Python 3中,它为我工作的方式是这样(尊重小写字母):

from tkinter.filedialog import askopenfilenames

filenames = askopenfilenames(title = "Open 'xls' or 'xlsx' file") 

for filename in filenames:
    # print or do whatever you want

希望您发现它有用! 问候!