python |制作文件并每隔 运行 递增名称
python | making a file and incrementing the name every run
好的,我有一个 运行s 的程序,每次它执行代码时都会将注释写入日志文件:
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)
应该能帮到你。
好的,我有一个 运行s 的程序,每次它执行代码时都会将注释写入日志文件:
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)
应该能帮到你。