是否可以强制重命名os.rename覆盖另一个文件(如果已经存在)?例如,如果文件Tests.csv已经存在,则在下面的代码中,它将替换为Tests.txt文件(也被重命名为Tests.csv).
os.rename("C:\Users\Test.txt","C:\Users\Tests.csv");
Run Code Online (Sandbox Code Playgroud)
atz*_*tzz 41
从Python 3.3开始,现在有一个标准的跨平台解决方案os.replace:
将文件或目录src重命名为dst.如果dst是目录,
OSError则会引发.如果dst存在且是文件,则如果用户具有权限,则将以静默方式替换它.如果src和dst在不同的文件系统上,则操作可能会失败.如果成功,重命名将是原子操作(这是POSIX要求).可用性:Unix,Windows.
版本3.3中的新功能.
但是,与文档相反,在Windows上,它并不保证是原子的(在Python 3.4.4中).那是因为它在Windows上内部使用MoveFileEx,这不能做出这样的保证.
Ble*_*der 36
你可以尝试shutil.move():
from shutil import move
move('C:\\Users\\Test.txt', 'C:\\Users\\Tests.csv')
Run Code Online (Sandbox Code Playgroud)
或者os.remove然后shutil.move:
from os import remove
from shutil import move
remove('C:\\Users\\Tests.csv')
move('C:\\Users\\Test.txt', 'C:\\Users\\Tests.csv')
Run Code Online (Sandbox Code Playgroud)
在Unix上,如果dst存在且是一个文件,如果用户有权限,它将被静默替换.如果src和dst在不同的文件系统上,则某些Unix风格的操作可能会失败.如果成功,重命名将是原子操作(这是POSIX要求).在Windows上,如果dst已经存在,即使它是文件,也会引发OSError; 当dst命名现有文件时,可能无法实现原子重命名. http://docs.python.org/library/os.html#os.rename
已接受答案的语法(对于 Python >= 3.3):
os.replace("src/file/path", "dst/file/path")
Run Code Online (Sandbox Code Playgroud)
(文档:os.replace)
| 归档时间: |
|
| 查看次数: |
46657 次 |
| 最近记录: |