我这里有一段代码可以从配置文件中复制目录列表等。它运行并复制目录等,但每次运行时仍然出错,任何人都可以帮助我理解为什么错误弹出或者有什么方法可以压制它
错误如下:
Traceback (most recent call last):
File "copydir.py", line 22, in <module>
shutil.copytree(sourcefile, destfile)
File "/usr/local/lib/python2.7/shutil.py", line 174, in copytree
os.makedirs(dst)
File "/usr/local/lib/python2.7/os.py", line 157, in makedirs
mkdir(name, mode)
OSError: [Errno 17] File exists: '/export/home/craigdba/My_backups/2012-10-24/'
守则
#!/usr/local/bin/python
import shutil
import datetime
import os
today=datetime.date.today()
todaystr=today.isoformat()
confdir=os.getenv("my_config")
dropbox=os.getenv("dropbox")
conffile = ('services.conf')
conffilename=os.path.join(confdir, conffile)
sourcedir=(r'/export/home/craigdba/')
destdir=os.path.join(dropbox, "My_backups"+"/"+todaystr+"/")
#os.makedirs(destdir)
for file_name in open(conffilename):
sourcefile=os.path.join(sourcedir, file_name.strip())
destfile=os.path.join(destdir, file_name.strip())
shutil.copytree(sourcefile, destfile)
提前致谢
答案 0 :(得分:2)
好像你的servicers.conf
中有空行,可能是文件末尾?
您可以通过选中以下内容来过滤代码中的内容:
fname = file_name.strip()
if fname:
sourcefile = os.path.join(...)
...
答案 1 :(得分:0)
我建议在尝试创建目标目录之前检查目标目录是否存在:
if not os.path.exists(destdir):
os.makedirs(destdir)
答案 2 :(得分:0)
解决此问题的一种简单方法是删除目标目录,然后将其替换为新目录。
首先检查目录是否存在,如果目录不存在。