Python 使用 os.rename() 重命名文件和目录

⚡ 智能摘要

Python 使用 os.rename() 重命名文件和目录。在这里,您将学习 os.rename()、os.renames()、shutil.move() 和 pathlib Path.rename(),以及如何重命名目录和批量重命名多个文件,并附有清晰的示例。

  • ✏️ os.rename(): os.rename(src, dst) 重命名文件或目录;源必须存在。
  • 🗂️ os.renames(): os.renames() 还会自动创建缺失的目标文件夹。
  • 🚚 shutil.move(): shutil.move() 可以重命名文件,也可以在文件系统之间移动文件。
  • 🐍 路径库: Path.rename() 以面向对象的方式重命名文件(Python 3.4+)。
  • 🤖 人工智能帮助: Copilot 等 AI 工具可以立即生成重命名和批量重命名代码。

Python 重命名文件 os.rename()

Python 重新命名文件

Python 重命名()文件 是一种用于重命名文件或目录的方法 Python 编程。 Python 可以通过传递两个名为 src(源)和 dst(目标)的参数来声明 rename() 文件方法。

句法

这是 os.rename() 方法的语法

os.rename(src, dst)

参数

源代码: Source 是文件或目录的名称。它必须已经存在。

夏令时: 目标是您要更改的文件或目录的新名称。

计费示例:

import os  
os.rename('guru99.txt','career.guru99.txt')

让我们详细看一下例子

您可以重命名原始文件,我们已将文件名从“Guru将“99.txt”改为“Career.guru99.txt”。

Python 重新命名文件

  • 要重命名“guru99.txt”文件,我们将使用 OS 模块中的“重命名功能”
  • 因此,当执行代码时,您可以观察到在面板右侧创建了一个新文件“career.guru99.txt”,我们将其重命名为原始文件。

以下是完整的代码

import os
import shutil
from os import path

def main():
	# make a duplicate of an existing file
    if path.exists("guru99.txt"):
	# get the path to the file in the current directory
        src = path.realpath("guru99.txt");
		
	# rename the original file
        os.rename('guru99.txt','career.guru99.txt') 
		
if __name__ == "__main__":
    main()

如何重命名目录 Python

os.rename() 方法不仅可以重命名文件,还可以重命名目录。将当前文件夹名称作为源名称传递,将新名称作为目标名称传递。

import os
os.rename("old_directory", "new_directory")

如果源目录不存在, Python 会引发 FileNotFoundError 错误,因此最好先检查路径。

使用 os.renames() 重命名文件

os.renames() 方法会重命名文件,并自动创建目标路径中缺失的中间目录。它还会删除源路径中遗留的空目录。

import os
os.renames("guru99.txt", "archive/2024/career.txt")

如果 archive 和 2024 文件夹尚不存在,则会自动创建它们。

使用 shutil.move() 重命名文件

shutil.move() 函数将文件移动到新位置,当目标位置与当前目录相同时,该函数会有效地重命名文件。

import shutil
shutil.move("guru99.txt", "career.guru99.txt")

与 os.rename() 不同,shutil.move() 还可以将文件移动到不同的文件系统或驱动器上。

使用 pathlib 模块重命名文件

In Python 从 3.4 及更高版本开始,pathlib 模块提供了一个面向对象的 Path.rename() 方法,用于重命名文件。

from pathlib import Path

file = Path("guru99.txt")
file.rename("career.guru99.txt")

rename() 方法返回一个新的 Path 对象,该对象指向重命名后的文件。

如何在……中重命名多个文件 Python

要一次性重命名多个文件,请使用 `os.listdir()` 遍历目录中的文件,并对每个文件调用 `os.rename()`。以下示例为每个文件添加了一个数字前缀。

import os

folder = "myfiles"
for count, filename in enumerate(os.listdir(folder)):
    new_name = f"file_{count}.txt"
    os.rename(os.path.join(folder, filename), os.path.join(folder, new_name))

使用 os.path.join() 可以保证代码在任何操作系统上都能正常运行。

常见问题

导入 os 函数并调用 os.rename(src, dst),传入当前文件名和新文件名。源文件必须已存在,或者 Python 引发 FileNotFoundError 错误。

os.rename() 重命名单个文件或目录,而 os.renames() 还会创建任何缺失的中间目录,并在移动后删除空的源文件夹。

是的。shutil.move(src, dst) 在目标位置与源位置相同时会重命名文件,并且与 os.rename() 不同,它还可以跨不同的文件系统移动文件。

使用 os.rename('old_dir', 'new_dir')。只要源目录存在,os.rename() 函数就可以同时用于文件和目录。

遍历 os.listdir(folder) 目录,并对每个文件调用 os.rename() 方法。使用 os.path.join() 方法构建完整路径,以确保代码能在任何操作系统上运行。

AI 助手(例如 GitHub Copilot)可以自动补全 os.rename() 和 pathlib 调用,并根据描述所需命名模式的注释生成批量重命名循环。

是的。人工智能工具可以自动编写批量重命名脚本,应用编号或日期前缀等模式,并添加错误处理功能,以处理缺失或重复的名称。

On Windows如果目标路径已存在,`os.rename()` 会抛出 `FileExistsError` 异常。在 Unix 系统上,它会静默覆盖原文件。为了避免数据丢失,请先使用 `os.path.exists()` 检查路径是否存在。

总结一下这篇文章: