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

far*_*raz 19 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')
Run Code Online (Sandbox Code Playgroud)

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

A. *_*das 23

askopenfilenames返回一个字符串而不是一个列表,问题仍然在问题跟踪器中打开,到目前为止最好的解决方案是使用splitlist:

import Tkinter,tkFileDialog

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

  • 我相信这现在已经过时了吗? (3认同)

Bel*_*ial 12

askopenfilenames
Run Code Online (Sandbox Code Playgroud)

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

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

>>> type(lst)
<type 'list'>
Run Code Online (Sandbox Code Playgroud)


mvx*_*mvx 7

将上述解决方案中的各个部分与几行代码组合在一起,以防止 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
Run Code Online (Sandbox Code Playgroud)

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

fileNames = []
for path in filePaths:
    name = path[46:].strip() 
    name2 = name[:-5].strip() 
    fileNames.append(name2)
fileNames
Run Code Online (Sandbox Code Playgroud)

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