如何解决python构造函数基本问题
| 我试图重用在类的构造函数实例中声明的打开的文件,但我想我在逻辑上做错了。例如考虑以下示例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。有人可以解释一下我的逻辑吗?
谢谢
解决方法
因为您的文件句柄耗尽了文件中的所有行。您需要使用以下命令在\“ function2 \”中进行倒带:
f.seek(0)
重新开始
看到这里docs.python.org
,复制引用不会创建新的迭代器。第一轮迭代消耗了整个文件,第二轮则没有任何消耗。如果要再次阅读,则需要重新开始。
,您应该在函数的开头添加“ 2”,以将文件位置重置为开头(在function1()中全部读取后,文件位置位于文件的末尾)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。