在python中递增文件名
我正在编写代码,每次运行时都会生成一个带有今天日期的新文本文件。例如,今天的文件名是2020-10-05。我想增加它,这样如果程序在同一天运行一次或多次,它将变成2020-10-05_1,_2等 我从另一个问题中找到了这段代码,我试着对它进行修补,但仍然卡住了。问题是,他们将文件名转换为int 1,2,3,这样可以工作,但这不是我想要的结果在python中递增文件名,python,function,increment,Python,Function,Increment,我正在编写代码,每次运行时都会生成一个带有今天日期的新文本文件。例如,今天的文件名是2020-10-05。我想增加它,这样如果程序在同一天运行一次或多次,它将变成2020-10-05_1,_2等 我从另一个问题中找到了这段代码,我试着对它进行修补,但仍然卡住了。问题是,他们将文件名转换为int 1,2,3,这样可以工作,但这不是我想要的结果 def incrementfile(): todayday = datetime.datetime.today().date() outpu
def incrementfile():
todayday = datetime.datetime.today().date()
output_folder = "//10.2.30.61/c$/Qlikview_Tropal/Raport/"
highest_num = 0
for f in os.listdir(output_folder):
if os.path.isfile(os.path.join(output_folder, f)):
file_name = os.path.splitext(f)[0]
try:
file_num = int(file_name)
if file_num > highest_num:
highest_num = file_num
except ValueError:
print("The file name %s is not an integer. Skipping" % file_name)
output_file = os.path.join(output_folder, str(highest_num + 1) + f"{todayday}" + ".txt")
return output_file
如何修改此代码,使最终得到的输出类似于2020-10-05_0、_1、_2等
谢谢 不是对您问题的直接回答,但您可以使用带有日期和当前时间的完整时间戳,而不是使用
\u 1
、\u 2
等,这样可以避免重复,例如:
从日期时间导入日期时间
t=str(datetime.now()).replace(“:”,“-”).replace(“,”)
打印(t)
示例输出:
2020-10-05_13-06-53.825870
我强烈建议您使用
pathlib
而不是os.path.join
。这样比较方便
def incrementfile():
td = datetime.datetime.today().date()
path = pathlib.Path("/tmp") #set your output folder isntead of /tmp
inc = len(list(path.glob(f"{td}*")))+1
outfile = path/f"{td}_{inc}.txt"
return outfile
我想这会管用的-
import os
import datetime
#assuming files will be .txt format
def incrementfile():
output_folder = "//10.2.30.61/c$/Qlikview_Tropal/Raport/"
files=os.listdir(output_folder)
current_name=datetime.date.today().strftime('%Y-%m-%d_0')
current_num=1
def nameChecker(name,files):
return True if name +'.txt' in files else False
while namChecker(current_name,files):
current_name+='_'+str(current_num)
current_num+=1
return current_name+'.txt'
您需要通过某种方式将上次运行时存储在内存中,可能是通过对上次运行时进行pickle,然后在运行该方法的任何位置检查pickle文件。