问题:
如何在python中打开一个包含每行一个整数值的文件。让python读取文件,将数据存储在列表中,然后打印列表?
我必须向用户询问文件名,然后执行上述所有操作。用户输入的文件将在下面的函数中用作“alist”。
由于
def selectionSort(alist):
for index in range(0, len(alist)):
ismall = index
for i in range(index,len(alist)):
if alist[ismall] > alist[i]:
ismall = i
alist[index], alist[ismall] = alist[ismall], alist[index]
return alist
答案 0 :(得分:1)
我认为这正是你所需要的:
file = open('filename.txt', 'r')
lines = [int(line.strip()) for line in file.readlines()]
print(lines)
我这里没有使用with
语句,因为我不确定您是否打算在代码中进一步使用该文件。
编辑:您只需将输入分配给变量......
filename = input('Enter file path: ')
然后是上面的东西,除了使用该变量作为参数打开文件...
file = open(filename, 'r')
最后,将列表lines
提交给您的函数selectionSort
。
selectionSort(lines)
注意:这只有在文件已存在的情况下才有效,但我确信这就是你的意思,因为创建一个新文件没有任何意义,因为它是空的。此外,如果指定的文件不在当前工作目录中,则需要指定完整路径 - 而不仅仅是文件名。
答案 1 :(得分:1)
在Python中打开文件并将其内容存储在字符串中的最简单方法:
with open('file.txt') as f:
contents = f.read()
解决您的问题:
with open('file.txt') as f:
values = [int(line) for line in f.readlines()]
print values
编辑:如其他答案中所述,变量f
仅存在于缩进的with
- 块中。在某些错误情况下,此构造会自动处理文件关闭,否则您将需要使用finally
- 构造。
答案 2 :(得分:0)
您可以将整数列表分配给字符串或列表
file = open('file.txt', mode = 'r')
values = file.read()
值将有一个可以直接打印的字符串
file = open('file.txt', mode = 'r')
values = file.readlines()
值将包含每个整数的列表,但不能直接打印
答案 3 :(得分:0)
f.readlines()
读取文件中的所有行,但如果您的文件包含大量行,该怎么办?
你可以试试这个:
new_list = [] ## start a list variable
with open('filename.txt', 'r') as f:
for line in f:
## remove '\n' from the end of the line
line = line.strip()
## store each line as an integer in the list variable
new_list.append(int(line))
print new_list