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’>的对象,该对象可能只能用一次。

  • 0
    点赞
  • 0
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zx33699659

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值