在程序开始时,日志文件被命名为。
filename='D://my_code_3/logging/'+timestr+'_XFR.log'
###set up logging to file
logging.basicConfig(level=logging.DEBUG,format='%(asctime)s %(name)-12s %(levelname)-8s %(message)s',datefmt='%m-%d %H:%M',filename='D://my_code_3/logging/'+timestr+'_XFR.log', filemode='w')
在程序执行的过程中,在这个日志文件中会有各种记录。
在程序结束时,需要对日志文件进行重命名,加入一个唯一的str变量(str9
)捕获的程序(在程序执行之初,即日志文件刚刚创建时,最初是不可用的)。 为了在程序结束时重命名日志文件,首先必须关闭old_name日志文件。 我在下面的代码中包含了这些指令。
fh = open('D://my_code_3/logging/'+timestr+'_XFR.log', "r")
print fh.read()
fh.close()
然后在最后,我要求重命名,如下图。
old_file ='D://my_code_3/logging/'+timestr+'_XFR.log'
new_file = 'D://my_code_3/logging/'+timestr+''+str9+'_XFR.log'
os.rename(old_file, new_file)
我得到以下错误信息:
`
回溯(最近一次调用)。 文件 "qar_xfr_2017_10_05_WIP.py",第283行,在os.rename(old_file, new_file)中WindowsError: 错误32] 进程无法访问该文件,因为它正被另一个进程使用`。
我认为 old_file 仍然在被写入,因此出现了文件已打开的消息。 如果是这样的话, 我如何能在尝试重命名 old_file 之前提供一个时间延迟?
先谢谢你的纠正建议一个解决方案。
所有处理程序都需要通过调用
logging.shutdown()
之后,你可以重新命名日志文件。