python中关于文件操作的总结

本来想对一个文件重复执行某一个函数,但是只有第一次执行函数时有结果,后面的几次都没有结果,最终发现是在函数外打开文件,第一次执行没有问题,第二次执行时,文件已经打开,函数找不到该文件了,或者是文件没有关闭,具体原因需要查看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’>的对象,该对象可能只能用一次。

猜你喜欢

转载自blog.csdn.net/qq_33699659/article/details/83622163