gpt4 book ai didi

python |创建一个文件并在每次运行时递增名称

转载 作者:行者123 更新时间:2023-12-01 09:02:55 32 4
gpt4 key购买 nike

好吧,我有一个运行的程序,每次执行代码时都会将注释写入日志文件:

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() 时发生的情况最多是我得到一个递增的文件名,但每次调用该函数时它都会这样做,因此每个注释都会获得一个具有递增名称的文件,而不是写入所有注释运行到同一个文件..

最佳答案

您将需要第二个函数,并且必须在 logger 函数之外调用它。像这样的事情:

def getlogfile(prefix):
file_list = [filename for filename in os.listdir('.') if filename.startswith(prefix)]
if prefix not in file_list:
# file doesn't exist yet; make it.
target_name = prefix
else:
# get latest one
number_list = [int(filename[-1]) for filename in file_list if filename[-2] == '_']
try:
latest_num = sorted(number_list)[-1]
target_name = '{}_{}'.format(prefix, latest_num + 1)
except IndexError:
# there aren't any underscored names yet
target_name = '{}_1'.format(prefix)
return target_name


def logger(event, date_file_name):
event = str(event)
current_date = datetime.datetime.now()
current_time_for_log = current_date.strftime('%d-%m-%y %H:%M:%S --- ')
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')

date_file_name = getlogfile(datetime.date.today().strftime('%d-%m-%y'))

logger('first call, new file', date_file_name)
logger('second call, same file', date_file_name)

应该可以帮到你。

关于 python |创建一个文件并在每次运行时递增名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52319398/

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