0

設定ファイルからディレクトリなどのリストをコピーするコードがここにあります。ディレクトリなどを実行してコピーしますが、実行するたびにエラーが発生します。エラーが表示される理由を理解するのに誰か助けてくれますか、それを抑制する方法はありますか

エラーは次のとおりです。

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)

前もって感謝します

4

3 に答える 3

2

に空の行があるようですが、servicers.confファイルの最後にある可能性がありますか?

以下を確認することで、コード内でそれらをフィルタリングできます。

fname = file_name.strip()
if fname:
    sourcefile = os.path.join(...)
    ...
于 2012-10-24T15:31:39.697 に答える
0

作成する前に、宛先ディレクトリが存在するかどうかを確認することをお勧めします。

if not os.path.exists(destdir):
    os.makedirs(destdir)
于 2012-10-24T15:30:16.310 に答える
0

これを修正する簡単な方法は、宛先ディレクトリを削除してから、新しいディレクトリに置き換えることです。

ディレクトリが存在しない場合は、まずディレクトリが存在するかどうかを確認します。

于 2012-10-24T15:32:43.627 に答える