【问题标题】:How do I exit without saving a file in Python如何在不保存 Python 文件的情况下退出
【发布时间】:2014-12-09 02:49:06
【问题描述】:

我是 python 新手,到目前为止只编写了几个程序来帮助我的工作(我是系统管理员)。我现在正在编写这个脚本,它将 MySQL 查询的输出写入文件。在循环之间,我想检查一个额外的条件,如果条件不匹配,我想关闭我正在写入的文件,而不保存它已经写入文件的内容。就像“不保存就退出”。我编写了这个简单的代码来查看不使用 close() 关闭文件是否会在不保存的情况下退出,但它会在我运行并退出此代码后创建包含内容的文件。那么,在 Python 中有没有一种合法的方式可以在不保存的情况下退出文件?

#/usr/bin/python
fo=open('tempfile.txt','a')
fo.write('This content\n')

P.S:- Python 版本为 2.4.3(抱歉,无法升级)

【问题讨论】:

    标签: python


    【解决方案1】:

    编程中没有这个概念。

    对于绝大多数编程语言,写入命令将尝试将数据直接放入文件中。由于各种原因,这可能会立即发生,也可能不会立即发生,因此许多语言还引入了刷新的概念,这将保证您的数据被写入文件

    您想要做的是将所有数据写入一个巨大的缓冲区(一个字符串),然后有条件地写入或跳过写入文件。

    【讨论】:

    • 临时文件的概念确实存在,而且它们通常比巨大的内存缓冲区更好。
    • 我正在写入的文件是一个 HTML 代码(相当大)。我想我会用这个作为最后的手段。
    • 您对临时文件的看法是对的,但这涉及到文件操作,例如重命名和移动,这似乎超出了当前问题级别的范围
    • stackoverflow.com/questions/1739913/… 几mb应该用python处理,没有太大问题。通常的做法是将网页提取到字符串中并从那里解析
    【解决方案2】:

    使用tempfile 模块来创建你的临时文件,然后如果你需要保存它,你可以使用shutil.copyfileobj 明确地这样做。

    Quick way to save a python TempFile?

    请注意,这仅适用于您绝对需要临时文件(大量数据等)的情况;如果您的内容很小,那么仅使用字符串缓冲区并仅在需要时才编写它是一种更好的方法。

    【讨论】:

      【解决方案3】:

      打开文件前检查条件:

      #/usr/bin/python
      
      if condition():
      
          fo=open('tempfile.txt','a')
          fo.write('This content\n')
      

      【讨论】:

        【解决方案4】:

        执行此操作的最安全方法是在您知道要保存文件之前不要写入,甚至不打开文件。例如,您可以将最终可能写入的内容保存到一个字符串或相同的列表中,这样您就可以在决定写入它们时编写它们。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-12-10
          • 1970-01-01
          • 2022-11-21
          • 1970-01-01
          • 2011-03-19
          • 1970-01-01
          • 2020-01-31
          • 1970-01-01
          相关资源
          最近更新 更多