Python 如何读取随机导入的文本文件并将其存储在列表中

Python 如何读取随机导入的文本文件并将其存储在列表中,python,list,import,tkinter,Python,List,Import,Tkinter,我使用file=askopenfile(filetypes=[(“Text files”,“*.txt”)])让用户选择要导入的文本文件,我使用file.read()读取它。我读过其他类似的问题,但它们似乎只涵盖了当你知道文件名时会发生什么。我想知道在我不知道用户将选择导入哪个文件的情况下,如何读取文本文件并将字符串存储在列表中。这就是我到目前为止所做的: import tkinter from tkinter.filedialog import askopenfile file = asko

我使用
file=askopenfile(filetypes=[(“Text files”,“*.txt”)])
让用户选择要导入的文本文件,我使用
file.read()读取它。我读过其他类似的问题,但它们似乎只涵盖了当你知道文件名时会发生什么。我想知道在我不知道用户将选择导入哪个文件的情况下,如何读取文本文件并将字符串存储在列表中。这就是我到目前为止所做的:

import tkinter
from tkinter.filedialog import askopenfile

file = askopenfile(filetypes=[("Text files","*.txt")])
txt = file.read()
import_list = []
import\u list
是我希望读取文件存储的内容。

txt=file.read()将文件的内容作为一个字符串存储在txt中

如果要将此字符串拆分为所有行的列表,应尝试以下操作:

import_list = txt.split('\n')

为了获取文件内容,您需要打开它进行读取(有关完整选项,请参阅)

在您的情况下,您的代码可能如下所示:

import tkinter
from tkinter.filedialog import askopenfile

f = askopenfile(filetypes=[("Text files","*.txt")])

import_list = []

txt = f.read()

import_list.append(txt)
# import_list[-1] now contains txt

# ... any other operations on f.

f.close()
如果要将import_list作为包含文件中所有行的列表,可以直接使用readlines()函数:

import_list = f.readlines()

注意:我将存储文件名的变量名从“file”更改为“file\u name”,因为文件是内置类型,并且以这种方式命名变量是为了隐藏它(请参见)。

您尝试了什么?实际上,
file=open('/some/file')
file=askopenfile(…)
之间没有区别。尝试一下,看看会发生什么。我上面的内容会提示用户使用对话框选择要上载的文件,然后读取它
file=open('/some/file)
意味着我必须知道文件名,或者我必须在另一个函数或类似的行中更改
/some/file
。在这个代码段中,您将打开文件两次。这不会产生错误吗?我想删除第一个读数,谢谢你指出它。请注意,打开一个文件两次读取不会产生错误。如果我运行上述代码并使用*.txt文件,我会得到一个
TypeError:Invalid file type
askiopenfile
返回一个已经打开的文件。它不返回文件名。要返回文件名,您可以调用
askopenfilename
,而不是
askopenfile
。对不起,我没有注意到这一点。布莱恩是对的。答案应该是askopenfilename,或者是askopenfile,然后直接包含在“with”语句中的部分。我想你也得关闭这个文件。