Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将askopenfilename()返回值作为参数传递给内置python函数open_Python_User Interface_Tkinter - Fatal编程技术网

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

如何将askopenfilename()返回值作为参数传递给内置python函数open,python,user-interface,tkinter,Python,User Interface,Tkinter,我是Python的新用户 filename=askopenfilenames()这会提示用户选择一个文件 我想对上面选择的文件使用file\u selection=open(filename,“r”) 我遇到的问题是,当您使用askopenfilenames() (我认为)字符串被()包围,因此open命令不起作用。有人能帮我吗 编辑: 当我尝试替换时:filename.replace(“,”,“”) 我收到错误消息:AttributeError:“tuple”对象没有属性“replace”as

我是Python的新用户

filename=askopenfilenames()
这会提示用户选择一个文件 我想对上面选择的文件使用
file\u selection=open(filename,“r”)

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

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

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()

另外,还有一些方法
askopenfile()
askopenfiles()
分别执行与
askopenfilename()
askopenfilename()
相同的操作,除了返回文件名之外,它们不返回文件名,而是返回打开阅读的文件

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


可能的副本似乎他们没有真正弄明白什么。你能确认一下哪个操作系统和Python的哪个版本吗?Windows 7和Python 3.5Joe,非常感谢你提供的信息。我正在制作一个GUI,希望用户选择一个甚至多个文件。然后,我希望程序读取文件并显示文件内容(例如公司名称),并在使用askopenfilename()命令选择单个文件时将所有文件中的所有名称放置到GUI上,并将其保存为字符串,在open命令中输入字符串变量之前,是否需要删除任何内容?在这种情况下,我将使用第一个或最后一个选项。注意,如果使用最后一个选项,要从打开的文件
f
获取全名,请使用
f.name
。要读取打开的文件,请使用
f.read()
(返回字符串)。也许你可以用一本字典;键是文件名,值是相应的文件内容。这只是一种方法。你说的移除任何东西是什么意思
askopenfilename()
应以字符串形式返回该文件的完整路径,并可直接用于
open
命令。在选项4(最后一个选项)中,每次通过for循环都将针对不同的文件…正确吗?
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()