使用python os.rename时出现错误[183]

2024-04-20 10:07:15 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我第一次使用python,我一直遇到错误183。我创建的脚本在网络中搜索所有“.py”文件并将它们复制到我的备份驱动器。请不要嘲笑我的剧本,因为这是我的第一个剧本。

剧本里有我做错什么的线索吗?

import os
import shutil
import datetime

today = datetime.date.today()
rundate = today.strftime("%Y%m%d")

for root,dirr,filename in os.walk("p:\\"):
    for files in filename:
        if files.endswith(".py"):
            sDir = os.path.join(root, files)
            dDir = "B:\\Scripts\\20120124"
            modname = rundate + '_' + files
            shutil.copy(sDir, dDir)
            os.rename(os.path.join(dDir, files), os.path.join(dDir, modname))
            print "Renamed %s to %s in %s" % (files, modname, dDir)

Tags: pathinpyimportfortodaydatetimeos
2条回答

我猜你是在windows上运行脚本。根据the list of windows error codes错误183是ERROR_ALREADY_EXISTS

所以我猜这个脚本是失败的,因为您试图在现有文件上重命名一个文件。

也许你每天要运行脚本不止一次?这将导致所有目标文件都已存在,因此当脚本运行更多次时,重命名将失败。

如果您特别想覆盖这些文件,那么您可能应该首先使用os.unlink删除它们。

考虑到错误183是[Error 183] Cannot create a file when that file already exists,您很可能在os.walk()调用中找到两个同名的文件,并且在成功重命名第一个文件后,第二个文件将无法重命名为相同的名称,因此您将得到一个文件已存在错误。

我建议在os.rename()调用周围尝试/排除以处理这种情况(在名称后面附加一个数字或其他内容)。

[是的,我知道这个问题已经有7年没有被问到了,但是如果我是从谷歌搜索到这里的话,也许其他区域也会找到它,这个答案可能会有帮助。]

相关问题 更多 >