我是python的新手,直到现在只写了几个程序来帮助我的工作(我是一个系统管理员)。我现在正在编写这个脚本,它会将MySQL查询的输出写入文件。在中间循环中,我想检查一个额外的条件,如果条件不匹配,我想关闭我写的文件,而不保存已经写入文件的内容。喜欢'退出而不保存'。我写了这个简单的代码,看看是否没有关闭文件,close()将退出而不保存,但它在我运行并退出此代码后创建带有内容的文件。那么,Python中有没有合法的方法来退出文件而不保存?
#/usr/bin/python
fo=open('tempfile.txt','a')
fo.write('This content\n')
P.S: - Python版本是2.4.3(抱歉,无法升级)
答案 0 :(得分:4)
编程中没有这样的概念。
对于绝大多数编程语言,write命令将尝试将数据直接放入文件中。这可能会或可能不会因各种原因立即发生,因此许多语言也引入了flush的概念,这将保证您的数据被写入文件
您要做的是将所有数据写入一个巨大的缓冲区(字符串),然后有条件地写入或跳过写入文件。
答案 1 :(得分:4)
使用tempfile
模块创建临时文件,然后如果需要保存,可以使用shutil.copyfileobj
显式创建。
请参阅Quick way to save a python TempFile?
请注意,这只是在您绝对需要临时文件(大量数据等)的情况下;如果您的内容很小,那么只需使用字符串缓冲区,只有在需要时才编写它是一种更好的方法。
答案 2 :(得分:0)
最安全的方法是在您知道要保存文件之前不要写入,甚至打开文件。例如,您可以保存最终写入字符串或列表的字符串,这样您就可以在决定之后编写它们。
答案 3 :(得分:0)
打开文件前检查条件:
#/usr/bin/python
if condition():
fo=open('tempfile.txt','a')
fo.write('This content\n')