首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用python自动重命名txt文件

如何使用python自动重命名txt文件
EN

Stack Overflow用户
提问于 2020-02-14 22:38:10
回答 3查看 184关注 0票数 2

我正在尝试找到一种使用python自动重命名文件的方法。

因此,文本文件每天都需要重命名,以包含昨天的日期(T-1)。

例如:FileName_20200121.txt需要重命名为FileName_20200120.txt

我该怎么做呢?

提前感谢您的帮助。

EN

回答 3

Stack Overflow用户

发布于 2020-02-14 22:40:56

此脚本将在文件名中搜索"%Y%m%d"格式的日期(例如,"FileName_20200121_foobar.txt"将起作用),并用date - 1day替换在文件中找到的日期

代码语言:javascript
复制
import os
from datetime import datetime, timedelta

old_filename = "FileName_20200121.txt"

strTime = datetime.now().strftime("%Y%m%d")
split_str = old_filename.split(".")[0].split("_")
format_str = "%Y%m%d"

for s in split_str:
    try:
        old_date_str = s # 20200121
        old_date = datetime.strptime(s, format_str).date() # 2020-01-21
        new_date = old_date - timedelta(days=1) # 2020-01-20
        new_date_str = new_date.strftime(format_str) # 20200120
    except:
        pass

new_filename = old_filename.replace(old_date_str, new_date_str)
print("new_filename", new_filename)
# FileName_20200120.txt

os.rename(old_filename, new_filename)
票数 0
EN

Stack Overflow用户

发布于 2020-02-14 22:52:10

您可以使用os.rename(src, dst)

将文件或目录src重命名为dst。如果存在dst,则操作将失败,并显示OSError

假设您的所有文件都以.txt结尾,下面的代码应该可以解决这个问题

代码语言:javascript
复制
import os
from datetime import datetime, timedelta


directory = '/path/to/files'
filenames = [f for f in os.listdir(directory) if f.endswith('.txt')]
yesterday = datetime.strftime(datetime.now() - timedelta(1), '%Y%m%d')

for file_name in filenames:
    new_file_name = file_name[:-12] + yesterday + file_name[-4:]
    os.rename(os.path.join(directory, file_name), os.path.join(directory, new_file_name))
票数 0
EN

Stack Overflow用户

发布于 2020-02-14 22:58:04

我想你要找的是os.rename

但是这些文件必须存在,并且您必须知道它们的完整路径和名称

确保先运行os.path.exists(filename),以防出现任何错误

要更改日期,可以使用datetime模块

您还可以将Windows设置配置为每天通过以下方式运行脚本

按Windows+R键,然后键入shell:startup

并将该文件添加到启动文件夹中(或创建一个运行python脚本的批处理文件)

或者,您可以转到“计划任务”来执行此操作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60228417

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档