我想要做的是选择多个文件 使用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')
现在,我可以选择多个文件, 但我不知道如何将这些文件名添加到列表中。 任何想法?
答案 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
希望您发现它有用! 问候!