如何使用Python重命名文件
我想把 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')