python - Python - 批量重命名为时间戳
问题描述
我对 Python 很陌生,我尝试编写一个代码,该代码采用文件列表(1.pdf、2.pdf、3.pdf 等)并将其重命名为创建时间。
我正在使用 Ubuntu 21 和 python 3.8
import time import os extension = ".pdf" folder_path = "/home/user/Downloads" file_list = [] for filename in os.listdir(folder_path): if filename.endswith(extension) and filename not in file_list: full = folder_path + '/' + filename t = os.path.getctime(full) t_str = time.ctime(t) t_obj = time.strptime(t_str) format_t = time.strftime("%Y%m%d_%H%M%S", t_obj) full_path = os.path.join(folder_path, filename) os.rename(full_path, os.path.join(folder_path, format_t + extension)) name_sum = format_t + extension file_list.append(name_sum)
当我运行时,代码文件被删除,只剩下 1 个文件。请帮助我理解我做错了什么。
解决方案
它们都重命名为相同的名称。您应该添加如下检查:
new_name = os.path.join(folder_path, format_t + extension)
if os.path.isfile(new_name):
raise Exception(new_name + " exists already")
os.rename(full_path, new_name)
或通过添加一些后缀或类似的东西来处理在同一秒创建的文件
推荐阅读
- elasticsearch - 在 Elasticsearch Data 文件夹中,创建文件夹 nodes/1 的场景是什么?
- java - 转义 XML 特殊字符
- excel - 我应该在每个模块中初始化 .fileSystemObject 的新实例,还是应该努力从主模块中引用该对象?
- android - 如何在撰写中获得活动
- java - 错误:无法创建 Java 虚拟机。错误:发生了致命异常。程序将会退出
- python - 如何使用 Sendgrid API 实现分页?
- django - 如何在 django 中创建多对多字段的 slug?
- sql - SQL:如何连接同一张表上的两行,基于相同的时间戳?
- c++ - 这是 LightOJ (Large Division 1214) 的问题,我不知道为什么我的代码不被接受
- python - 如何使用反应嵌入菜单循环