YOU*_*YOU 509
用途os.rename
:
import os
os.rename('a.txt', 'b.kml')
Run Code Online (Sandbox Code Playgroud)
Abd*_*zak 58
文件可能在目录中,在这种情况下指定路径:
import os
old_file = os.path.join("directory", "a.txt")
new_file = os.path.join("directory", "b.kml")
os.rename(old_file, new_file)
Run Code Online (Sandbox Code Playgroud)
And*_*aam 47
import shutil
shutil.move('a.txt', 'b.kml')
Run Code Online (Sandbox Code Playgroud)
这将用于重命名或移动文件.
idj*_*jaw 24
从Python 3.4开始,可以使用pathlib模块来解决这个问题.
如果您碰巧使用旧版本,则可以使用此处找到的反向移植版本
假设你不在根路径中(只是为了增加一点难度)你想要重命名,并且必须提供完整路径,我们可以看看这个:
some_path = 'a/b/c/the_file.extension'
Run Code Online (Sandbox Code Playgroud)
所以,你可以走你的路径并从中创建一个Path
对象:
from pathlib import Path
p = Path(some_path)
Run Code Online (Sandbox Code Playgroud)
为了提供有关我们现在拥有的这个对象的一些信息,我们可以从中提取出一些东西.例如,如果出于某种原因,我们希望通过修改从文件名的文件重命名the_file
到the_file_1
,那么我们可以得到的文件名部分:
name_without_extension = p.stem
Run Code Online (Sandbox Code Playgroud)
并且仍然持有扩展:
ext = p.suffix
Run Code Online (Sandbox Code Playgroud)
我们可以通过简单的字符串操作来执行修改:
new_file_name = f"{name_without_extension}_1"
Run Code Online (Sandbox Code Playgroud)
现在我们可以通过调用rename
我们创建的路径对象上的方法来执行重命名,并附ext
加以完成我们想要的正确重命名结构:
new_file_name = "{}_{}".format(name_without_extension, 1)
Run Code Online (Sandbox Code Playgroud)
更短时间内展示其简洁性:
p.rename(Path(p.parent, new_file_name + ext))
Run Code Online (Sandbox Code Playgroud)
Chr*_*ett 15
从 Python 版本 3.3 及更高版本开始,通常首选使用os.replace
代替,os.rename
因此FileExistsError
如果目标文件已存在,则不会引发此错误。
assert os.path.isfile('old.txt')
assert os.path.isfile('new.txt')
os.rename('old.txt', 'new.txt')
# Raises FileExistsError
os.replace('old.txt', 'new.txt')
# Does not raise exception
assert not os.path.isfile('old.txt')
assert os.path.isfile('new.txt')
Run Code Online (Sandbox Code Playgroud)
请参阅文档。
使用os.rename
.但是你必须将两个文件的完整路径传递给该函数.如果a.txt
我的桌面上有一个文件,那么我会这样做,而且我也必须完全重命名文件.
os.rename('C:\\Users\\Desktop\\a.txt', 'C:\\Users\\Desktop\\b.kml')
Run Code Online (Sandbox Code Playgroud)