如何使用Python重命名文件

707 投票
17 回答
823970 浏览
提问于 2025-04-15 20:41

我想把 a.txt 这个文件改成 b.kml 这个文件。

17 个回答

107

从Python 3.4开始,你可以使用pathlib模块来解决这个问题。

如果你使用的是旧版本,可以在这里找到一个可以使用的版本。

假设你不在根目录(这样稍微增加一点难度),你想要重命名一个文件,并且需要提供完整的路径,我们可以看看这个:

some_path = 'a/b/c/the_file.extension'

所以,你可以把你的路径变成一个Path对象:

from pathlib import Path
p = Path(some_path)

为了更好地理解这个对象,我们可以从中提取一些信息。例如,如果我们想把文件名从the_file改成the_file_1,我们可以先获取文件名部分:

name_without_extension = p.stem

同时也可以保留文件的扩展名:

ext = p.suffix

我们可以通过简单的字符串操作来进行修改:

Python 3.6及以上版本可以使用f-strings!

new_file_name = f"{name_without_extension}_1"

如果不是的话:

new_file_name = "{}_{}".format(name_without_extension, 1)

现在我们可以通过调用我们创建的路径对象上的rename方法来进行重命名,并把ext加上,以完成我们想要的重命名结构:

p.rename(Path(p.parent, new_file_name + ext))

更简洁地展示它的简单性:

Python 3.6及以上版本:

from pathlib import Path
p = Path(some_path)
p.rename(Path(p.parent, f"{p.stem}_1_{p.suffix}"))

低于Python 3.6的版本则使用字符串格式化的方法:

from pathlib import Path
p = Path(some_path)
p.rename(Path(p.parent, "{}_{}_{}".format(p.stem, 1, p.suffix))
155

文件可能在一个文件夹里,这种情况下你需要指定路径:

import os
old_file = os.path.join("directory", "a.txt")
new_file = os.path.join("directory", "b.kml")
os.rename(old_file, new_file)
1113

使用 os.rename

import os

os.rename('a.txt', 'b.kml')

用法:

os.rename('from.extension.whatever','to.another.extension')

撰写回答