这是我第一次使用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)
我猜你是在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年没有被问到了,但是如果我是从谷歌搜索到这里的话,也许其他区域也会找到它,这个答案可能会有帮助。]
相关问题 更多 >
编程相关推荐