在日常的编程任务中,经常需要批量或单个地对文件进行重命名。Python 提供了非常方便的工具来实现这一操作,主要通过 os
和 shutil
模块来完成文件的重命名工作。
本文将介绍如何使用 Python 进行文件重命名,并提供一些常见的用法示例。
os.rename()
重命名文件Python 的 os
模块提供了 rename()
方法,可以用来重命名文件或目录。其基本语法如下:
```python import os
os.rename(旧文件名, 新文件名) ```
假设你有一个名为 old_name.txt
的文件,需要将其重命名为 new_name.txt
:
```python import os
old_name = "old_name.txt" new_name = "new_name.txt"
os.rename(old_name, new_name)
print(f"{old_name} 已成功重命名为 {new_name}") ```
有时候我们需要对多个文件进行批量重命名。此时,可以使用 os
模块结合循环来完成此任务。例如,我们可以按一定的规则重命名文件。
假设你有多个 .txt
文件,想要给所有文件加上前缀 prefix_
。
```python import os
files = os.listdir(".")
for file in files: # 如果是.txt文件 if file.endswith(".txt"): # 新的文件名,加上前缀 new_name = "prefix_" + file # 重命名文件 os.rename(file, new_name) print(f"{file} 已重命名为 {new_name}") ```
如果你想要根据更复杂的模式来批量重命名文件,可以使用 Python 的 re
模块配合 os.rename()
来实现。比如,按规则修改文件名中的日期部分。
假设你有多个文件名格式为 report_2023_03_01.txt
,想要将文件名中的日期部分更改为 2023_04_01
。
```python import os import re
files = os.listdir(".")
pattern = r"(\d{4}\d{2}\d{2})"
for file in files: # 如果文件名匹配模式 if re.search(pattern, file): # 使用正则替换日期 new_name = re.sub(r"(\d{4}\d{2}\d{2})", "2023_04_01", file) # 重命名文件 os.rename(file, new_name) print(f"{file} 已重命名为 {new_name}") ```
shutil.move()
重命名文件除了 os.rename()
,还可以使用 shutil
模块的 move()
方法来实现文件重命名。实际上,move()
方法不仅可以用来移动文件,还可以用来重命名文件。如果目标文件名和原文件名位于相同目录下,move()
就会执行重命名操作。
shutil.move()
重命名文件```python import shutil
old_name = "old_name.txt" new_name = "new_name.txt"
shutil.move(old_name, new_name)
print(f"{old_name} 已成功重命名为 {new_name}") ```
在文件重命名过程中,我们需要考虑可能出现的错误,例如文件不存在、权限不足等。可以通过 try...except
语句来捕获并处理这些错误。
```python import os
try: os.rename("non_existent_file.txt", "new_name.txt") except FileNotFoundError: print("文件不存在,重命名失败!") except PermissionError: print("没有足够的权限进行文件重命名!") except Exception as e: print(f"发生错误:{e}") ```
本文介绍了如何使用 Python 的 os
和 shutil
模块来进行文件重命名操作。你可以根据需要选择合适的方式,如单个文件重命名、批量重命名、使用正则表达式等。同时,不要忘记对文件操作进行错误处理,以确保程序的健壮性。
通过这些方法,你可以高效地完成文件管理和自动化任务。