这是我第一次使用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)
答案 0 :(得分:4)
我猜你在Windows上运行脚本。根据{{3}}错误183是ERROR_ALREADY_EXISTS
所以我猜测脚本失败了,因为你试图通过现有文件重命名文件。
也许您每天不止一次运行脚本?这将导致所有目标文件已经存在,因此当脚本再次运行时重命名失败。
如果您特别想要覆盖这些文件,那么您应该首先使用os.unlink
删除它们。
答案 1 :(得分:1)
鉴于错误183是[Error 183] Cannot create a file when that file already exists
的事实,您很可能在os.walk()
调用中找到2个同名文件,并且第一个成功重命名后,第二个将失败要重命名为相同的名称,这样您将得到一个文件已存在错误。
我建议在os.rename()
调用周围尝试使用try / except来处理这种情况(在名称或其他内容后面添加数字)。
[是的,我知道问这个问题已经有7年了,但是如果我从Google搜索中来到这里,也许其他地区也能找到它,这个答案可能会有所帮助。]