我正在尝试重用一个在类的构造函数实例中声明的打开文件,但我想我在做一些逻辑上错误的操作。例如,请考虑以下示例
class Temp:
def __init__(self):
self.open_file_ = open('periodic_status','r')
def function1(self):
new_file = self.open_file_
for i in new_file:
print 'test1'
def function2(self):
for j in self.open_file_:
print 'test2'
if __name__ == '__main__':
obj1 = Temp()
obj1.function1()
obj1.function2()
在上面的程序中我可以打印test1但是我无法打印语句test2。有人可以解释我的逻辑。
由于
答案 0 :(得分:3)
答案 1 :(得分:2)
复制引用不会创建新的迭代器;第一轮迭代消耗整个文件,第二轮没有消耗。如果你想再读一遍,你需要回头看。
答案 2 :(得分:1)
您应该在函数开头添加open_file_.seek(0)
以将文件位置重置为开头(在函数1()中读取所有内容之后将其复制到文件的末尾。)