从打开的文件设置多个变量 - Python

时间:2015-08-11 20:14:17

标签: python python-2.7

我使用python程序打开一个文件。

git reset --hard HEAD^

然后我设置一个变量:

file = open('test.txt', 'r')

还有一个:

data = file.read()

数据变量应该是字符串,data2应该是列表。打印数据工作正常,但是当我尝试打印data2时,我得到一个空列表。它为什么这样工作?为什么设置数据与data2?

4 个答案:

答案 0 :(得分:3)

当您打开文件时,它会返回一个文件指针。这意味着您只能读取每一行一次。使用read()后,它会读取整个文件,将文件指针移动到末尾。然后,当您使用readlines()时,它会返回一个空列表,因为文件末尾没有任何行。

答案 1 :(得分:1)

您已使用file.read()使用了迭代器,因此在致电readlines时无需消耗任何内容,在调用file.seek(0)之前需要readlines才能重置指向文件开头的指针。

with open('test.txt') as f: # with closes your files automatically
    data = f.read() 
    f.seek(0) # reset file pointer
    data2 = f.readlines() 

答案 2 :(得分:1)

设置data会干扰data2并非如此。相反,它正在呼叫file.read()干扰file.readlines()

当您使用file = open('test.txt', 'r')打开文件时,变量file现在是指向该文件的指针。

因此,当您拨打file.read()file.readlines()时,会移动指针file

file.read()将指针移动到文件末尾,因此不再需要阅读file.readlines()

即使您将它们分配给不同的变量,它们最终也依赖于file。因此,通过设置data,您修改file会干扰您设置data2的尝试。

答案 3 :(得分:1)

为什么不拆分字符串而不是再次读取文件。

id<GCMReceiverDelegate>