微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在python中增加文件名

如何解决在python中增加文件名

我正在编写代码,每次运行时都会生成一个具有今天日期的新文本文件。例如,今天的文件名为2020-10-05。我想增加它,以便如果该程序在同一天运行一次或多次,则变成2020-10-05_1,_2等。

我有从另一个问题中找到的这段代码,我已经尝试过修改它,但仍然遇到问题。问题出在这里,他们将文件名转换为整数1,2,3,并以此方式工作,但这不是我想要的结果。

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等。?

谢谢!

解决方法

我强烈建议您使用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
,

不是您问题的直接答案,而是可以使用带有日期和当前时间的完整时间戳,而不是使用_1_2等,这样可以避免重复操作,例如EG:

from datetime import datetime

t = str(datetime.now()).replace(":","-").replace(" ","_")
print(t)

示例输出:

2020-10-05_13-06-53.825870
,

我认为这会起作用-

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'

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。