我似乎得到一个错误,虽然脚本运行,我不明白为什么

时间:2012-10-24 15:23:50

标签: python

我这里有一段代码可以从配置文件中复制目录列表等。它运行并复制目录等,但每次运行时仍然出错,任何人都可以帮助我理解为什么错误弹出或者有什么方法可以压制它

错误如下:

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)

提前致谢

3 个答案:

答案 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)

解决此问题的一种简单方法是删除目标目录,然后将其替换为新目录。

首先检查目录是否存在,如果目录不存在。