Python程序重命名文件名,同时覆盖是否已有该文件


问题内容

如标题所述,我想要一个可更改文件名的python程序,但是如果已有的文件具有该目标名称,我想覆盖它。

import os, sys

original = sys.argv[1]
output = sys.argv[2]

os.rename(original, output)

但是,当已经有该目标名称的文件时,我的代码仅向我显示此错误。

  os.rename<original, output>
WindowsError: [Error 183] Cannot create a file when that file already exists

我应该怎么做?


问题答案:

在Windows上,os.rename不会替换目标文件(如果存在)。您必须先将其删除。您可以捕获该错误,然后在删除文件后重试:

import os

original = sys.argv[1]
output = sys.argv[2]

try:
    os.rename(original, output)
except WindowsError:
    os.remove(output)
    os.rename(original, output)