zoukankan      html  css  js  c++  java
  • 坑(二十九)—— Python中文件打开未关闭便调用文件或未关闭文件便多次以写的方式打开文件导致异常

    Python中文件打开未关闭便调用文件或未关闭文件便多次以写的方式打开文件导致异常

    复现

    利用python代码解析字符串,生成一个临时python文件,并执行该文件。

    发现临时python文件中的部分code没有被执行,或由临时python文件输出的结果错误

    例如以下场景

    1)使用python解析伪代码,并生成tmp_python.py临时python文件,在没有close()tmp_python.py临时python文件,便通过python3 tmp_python.py执行,此时并不会产生任何结果。

    2)使用python以aw方式打开文件,没有close(),再次以aw方式打开文件,导致写入的新数据异常

    原因

    • 在os.system()、subprocess.Popen()前,没有将文件对象close()

    • close()相当于执行 “保存并退出”

    • 多次打开文件并没有close(),此时文件指针机会产生混乱,从而导致数据开始写的位置异常

    解决

    • 执行文件前,必须close()文件,如果后续还需要再次写文件,重新打开文件生成文件对象

    • 当出现第二次以aw方式打开文件时,先将原来的文件对象close()

    博客内容仅供参考,部分参考他人优秀博文,仅供学习使用
  • 相关阅读:
    html5之服务器推送事件
    浅谈js之this对象
    浅谈js之事件处理
    浅谈js之ajax
    浅谈js之事件流
    浅谈js之闭包
    浅谈JS引用类型之Array类型
    关于window.onload的一些小理解
    web渗透测试中WAF绕过讲解(二)基于HTTP协议绕过
    web渗透测试中WAF绕过讲解(一)
  • 原文地址:https://www.cnblogs.com/linagcheng/p/15727162.html
Copyright © 2011-2022 走看看