Skip to main content
 首页 » 编程设计

python之重用 python 文件处理程序

2025年05月04日1152php

我是 python 的新手,我 需要帮助来理解下面的代码 -

def main(): 
    print('main') 
 
    fh = open('C:\\Python\\lines.txt') 
    for line in fh.readlines(): 
        print(line, end = '') 
 
    fh = open('C:\\Python\\lines.txt') 
    for index,line in enumerate(fh.readlines()): 
        print(index, line, end = '') 
 
if __name__ == "__main__":main() 

当我删除第二个 fh = open... 时,然后 第二个 for 循环不打印。为什么?

请您参考如下方法:

你应该通读一个 primer or a tutorial on the best practices with dealing with file handlers .由于您没有关闭 fh 的第一个实例,在较大的程序中,您会遇到系统内核会因为打开的文件句柄过多而使您的程序失败的问题,这绝对是一件坏事。在传统语言中你必须做更多的舞蹈,但在 python 中你可以只使用上下文管理器:

with open('C:\\Python\\lines.txt') as fh: 
    for line in fh.readlines(): 
        print(line, end = '') 

自然地,文件位置是每当读取文件时都会改变的东西,这会将位置放在最后,所以如果你想这样做

with open('C:\\Python\\lines.txt') as fh: 
    for line in fh.readlines(): 
        print(line, end = '') 
 
    for line in fh.readlines(): 
        print(index, line, end = '') 

除非您在两个 for 循环之间执行 fh.seek(0),否则第二组 read 将无法读取任何内容。