1)文件批量重命名。要求:文件夹不改名;每个文件的后缀名不变;名字改为该文 件的创建或修改日期(注意文件名的合法字符);如果多个文件重名,可以延长名字 (例如添加一个长度为 n 的随机字符串)。Python实现
时间: 2024-01-26 15:04:24 浏览: 96
基于Python实现批量重命名文件
好的,我可以为您解答这个问题。针对您的需求,您可以按照以下步骤实现文件批量重命名:
1. 首先,使用Python的os模块获取文件夹中的所有文件名,并遍历每个文件。
2. 对于每个文件,使用os.path.getmtime()获取文件的修改时间,或者使用os.path.getctime()获取文件的创建时间,以此作为文件名的一部分。
3. 将文件名中的不合法字符(例如空格或\)替换为合法字符。
4. 如果多个文件重名,可以在文件名后添加一个随机字符串,可以使用Python的random模块生成随机字符串。
5. 最后,使用os.rename()函数将原始文件名更改为新文件名。
下面是参考代码(假设文件夹名为folder_name):
```python
import os
import random
import string
folder_path = "/path/to/folder_name"
for filename in os.listdir(folder_path):
filepath = os.path.join(folder_path, filename)
if os.path.isfile(filepath):
# 获取文件的修改时间
# mtime = os.path.getmtime(filepath)
ctime = os.path.getctime(filepath)
# 将时间戳转换为合适的时间格式
# date_str = datetime.fromtimestamp(mtime).strftime('%Y%m%d_%H%M%S')
date_str = datetime.fromtimestamp(ctime).strftime('%Y%m%d_%H%M%S')
# 替换非法字符
new_filename = "".join([c if c.isalnum() else "_" for c in date_str]) + os.path.splitext(filename)[-1]
# 如果文件名重复,添加随机字符串
while os.path.exists(os.path.join(folder_path, new_filename)):
new_filename = "".join([c if c.isalnum() else "_" for c in date_str]) + "_" + ''.join(random.choices(string.ascii_uppercase + string.digits, k=5)) + os.path.splitext(filename)[-1]
# 重命名文件
os.rename(filepath, os.path.join(folder_path, new_filename))
```
希望对您有所帮助!
阅读全文