2012-01-24 10 views
2

これは私の初めてのpythonを使用しています。エラー183が発生します。作成したスクリプトは、ネットワーク上ですべての '.py'ファイルを検索してバックアップドライブにコピーします。これは私の最初のものなので、私のスクリプトを笑わないでください。エラー[183]​​ python os.renameを使用している場合

私がスクリプトで間違っていることへの手掛かりはありますか?

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

元の投稿を編集して、正確なスタックトレースをコピーして貼り付けることはできますか?これはちょうど "ファイルが既に存在する"というエラーではありませんか? –

+0

ハハスクリプト! :) からかってるだけだよ! –

+1

少なくとも、ファイルが宛先に存在するかどうかを確認する必要があります。ただし、rsyncを使用してスクリプトを劇的に簡略化してみるとよいでしょう。(他の人たちがあなたのために重労働を起こしたためです) – GoingTharn

答えて

3

私はWindows上でスクリプトを実行していると思います。 the list of windows error codesによると、エラー183はERROR_ALREADY_EXISTS

です。したがって、既存のファイルの上にファイルの名前を変更しようとしているので、スクリプトが失敗していると思います。

おそらく、スクリプトを1日に複数回実行していますか?その結果、すべての出力先ファイルが既に存在しているため、スクリプトをさらに実行すると名前の変更に失敗します。

特にファイルを上書きする場合は、最初にos.unlinkを使用して削除する必要があります。

+0

基本的にスクリプトは月1回実行され、アーカイブされます。スクリプトが最初にファイルをコピーしてから名前を変更するように設定されている方法は、少なくともそれは起こっていると思います。 –

+0

それは正しいですが、名前を変更しようとしている時点で183エラーが発生している場合は、名前を変更しようとしているファイル名が既に存在しているように見えます。どちらか、またはファイルをコピーするときにエラーが発生している場合は、コピーするファイルが存在します。たぶん何かが間違っているかもしれませんが、明白な答えは、スクリプトが1日に1回以上実行されていることです。 – obmarg

関連する問題