gpt4 book ai didi

python - 如果日志文件关闭后为空,则删除日志文件

转载 作者:太空宇宙 更新时间:2023-11-04 01:21:15 25 4
gpt4 key购买 nike

我有一个库函数可以启动通用后台进程并记录它。

def LaunchAndLog(cmd):
cmd_args = cmd.split() # Split arguments into array
logfile = cmd_args[0] + '.log'
with open(logfile,'w') as log:
return subprocess.Popen(cmd_args, stdout=log,stderr=log)

主要问题:是否可以修改此函数,以便在关闭日志文件时,如果它为空,它会被自动删除?

注意:我想要一个可以调用此函数并忘记它的解决方案。我不想每次作业结束后都必须记住调用清理函数。

(被拒绝?)想法:我可以使用threading 来启动一个单独的线程来监视进程和/或日志文件,但这似乎比必要的更复杂。

注意:必须在 Python 2.7 中工作,但我也对 Python 3 解决方案感兴趣,如果它更简单的话。

最佳答案

尝试颠倒这个概念,只在准备好写入时才创建文件。创建您自己的类来处理文件对象:

class MyFile():
def __enter__(self):
return self

def __init__(self, path):
''' store the path, but don't actually open the file '''
self.path = path
self.file_object = None

def write(self, s):
''' you open the file here, just before writing '''
if not self.file_object:
self.file_object = open(self.path, 'w')
self.file_object.write(self, s)

def close(self):
''' close the file '''
if self.file_object:
self.file_object.close()

def __exit__(self, exc_type, exc_value, exc_traceback):
self.close()

然后你的 with 语句变成这样:

with MyFile(logfile) as log:

提议但拒绝了 supergra 手动合并的编辑

关于python - 如果日志文件关闭后为空,则删除日志文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21028526/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com