本文共 779 字,大约阅读时间需要 2 分钟。
本来想对一个文件重复执行某一个函数,但是只有第一次执行函数时有结果,后面的几次都没有结果,最终发现是在函数外打开文件,第一次执行没有问题,第二次执行时,文件已经打开,函数找不到该文件了,或者是文件没有关闭,具体原因需要查看python内部的执行机制。举例如下:
定义一个函数,输出文本文件里的每一行,首先打开文件,然后执行函数,第一次执行正常,第二次执行没有任何输出。file = open('temp.txt')def pri(file): for line in file: print(line)pri(file)//此函数正常输出print("===============")pri(file)//此函数无输出
修改为:
address = 'temp.txt'def prin(address): file = open(address) for line in file: print(line)prin(address)prin(address)
将函数参数改为文件地址,在函数内部打开文件,则两次都正常输出。
另外一种方式也证明了打开的文件不能执行第二次,如下:print('---------------')file = open('temp.txt')def pri(file): for line in file: print(line)pri(file)print("===============")file.close()file = open('temp.txt')pri(file)
第二次执行函数之前先关闭文件再打开文件,第二个函数就可以正常执行了。
打开的文件是一个<class ‘_io.TextIOWrapper’>的对象,该对象可能只能用一次。转载地址:http://vypvn.baihongyu.com/