用Python打开文件

时间:2014-03-01 21:32:54

标签: python list file integer

问题:

如何在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  

4 个答案:

答案 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