-1

我想在不关闭的情况下写入文本文件,因为我不知道我会停止关闭什么,我将解释漏洞问题

我已经创建了名为 的文本resume.txt,所以在我的项目中的每个特定进程之后它都会覆盖,resume.txt所以每次我的项目启动时它都会检查该文件以了解最后的进程,所以每次写入后我的问题我必须关闭才能应用它,我真的不认为这很好我认为有更好的解决方案

此代码不起作用

wr = open('resume.txt','w')
login(usr,pas)
wr.write('login')
post(msg,con)
wr.write('post')
..so on 

问题是如何在不关闭的情况下编写,我不能wr.close在最后写,因为它可能被用户终止或连接超时..等

4

3 回答 3

6

不确定这是否适用于您的代码,但是包装在一个with块中呢?

with open('resume.txt','w') as wr:
    login(usr,pas)
    wr.write('login')
    # This is hacky, but it will go to the beginning 
    # of the file and then erase (truncate) it
    wr.seek(0)
    # I think you wanted to do this after you tried an action, 
    # but you can move it to wherever you want
    post(msg,con)
    wr.truncate()
    wr.write('post')

这将确保文件在错误时关闭。当您想关闭文件时,只需在与以下相同的级别启动下一个代码with

with open('resume.txt','w') as wr:
    login(usr,pas)
    wr.write('login')
    wr.seek(0)
    post(msg,con)
    wr.truncate()
    wr.write('post')
    # wr.seek(0) ...

# Next steps...

我还建议检查日志模块,看看它是否可以完成你想要的。

于 2012-08-23T19:33:26.143 回答
3

首先我要感谢 tMC

解决方案是

wr = open('resume.txt','w')
login(usr,pas)
wr.write('login')
wr.flush()
post(msg,con)
wr.seek(0)
wr.write('post')
wr.flush()

我曾经flush()写作和申请以及seek(0)覆盖

于 2012-08-23T21:58:28.667 回答
-1

试试with 语句。理解起来有点复杂,但应该这样做。

于 2012-08-23T19:32:05.423 回答