【发布时间】:2018-09-13 18:01:50
【问题描述】:
好吧,我有一个正在运行的程序,每次它执行代码时都会向日志文件写入注释:
def logger(event):
event = str(event)
current_date = datetime.datetime.now()
current_time_for_log = current_date.strftime('%d-%m-%y %H:%M:%S --- ')
date_file_name = current_date.strftime('%d-%m-%y')
with open('{}'.format(date_file_name), 'a+') as log_file:
log_file.write('-' * 50 + '\n' + '\n')
log_file.write(current_time_for_log + event + '\n')
如果文件存在,它将写入文件,如果不存在,它会创建文件并将其命名为当前日期(即 13-09-18)
现在我想要完成并且无法弄清楚如何使用 os.path.exist() 是每次我运行程序时都会检查是否有当前日期的文件,如果没有创建它,如果它确实存在创建一个具有相同日期的文件,但添加'_1':
第一次运行程序- 创建文件 13-09-18
第二次 """- 创建文件 13-09-18_1
第三次"""- 创建文件 13-09-18_2
等等……
当我使用 os.path.exist() 时会发生什么,充其量我会得到一个递增的文件名,但每次调用函数时都会这样做,所以每个注释都会得到一个名称递增的文件,而不是写入所有 cmets运行到同一个文件..
【问题讨论】:
-
请发布您的最佳编码尝试。 Stack Overflow 在修复错误代码方面比从头开始提供新代码更有效。
-
把文件创建代码放到logger函数外面就行了
-
我删除了它,现在我真的不能再复制它了...无论如何我会尝试复制它..
-
def logger(event): event = str(event) current_date = datetime.datetime.now() current_time_for_log = current_date.strftime('%d-%m-%y %H:%M: %S --- ') date_file_name = current_date.strftime('%d-%m-%y') i = 0 while os.path.exists(date_file_name): i +=1 with open('{}{}{ }'.format(date_file_name, '_', str(i)), 'a+') as log_file: log_file.write('-' * 50 + '\n' + '\n') log_file.write(current_time_for_log + event + '\n') 是我能做的最好的了.. 它只是写了一个新的文件名 13-09-18_0 并且与我发布的普通代码相同..
标签: python file logging filenames