如何将askopenfilename()返回值作为参数传递给内置的python函数open

时间:2016-08-12 15:57:30

标签: python user-interface tkinter

我是Python的新用户。

filename = askopenfilenames()这会提示用户选择文件 我想将file_selection = open(filename, "r")与上面选择的文件一起使用。

我遇到的问题是当你使用askopenfilenames()时 (我认为)字符串被()包围,因此open命令不起作用。有人可以帮帮我吗?

编辑: 当我尝试替换:filename.replace(",","") 我收到错误消息:AttributeError:' tuple'对象没有属性'替换'

1 个答案:

答案 0 :(得分:2)

askopenfilenames()允许用户选择多个文件;因此它返回所有选定文件名的元组。

如果您想允许用户选择多个文件,只需遍历返回的元组:

filenames = askopenfilenames() #filenames is a tuple of strings!
for filename in filenames:
    with open(filename, "r") as f:
        #Do stuff with open file f.

如果您想让用户只选择一个文件,请查看askopenfilename()

filename = askopenfilename() #filename is a string!
with open(filename, "r") as f:
    #do stuff with open file f

此外,方法askopenfile()askopenfiles()分别与askopenfilename()askopenfilenames()做同样的事情,除了不返回文件名,它们返回打开的文件以供阅读

f = askopenfile() #f is an open file.
#do stuff with f
f.close()

open_files = askopenfiles() #open_files is a tuple of open files.
for f in open_files:
    #do stuff with f
    f.close()