さて、私は午後のほとんどの間これをデバッグしてきましたが、タオルを投げています。
学生の作業が終わった後、作業フォルダーをサーバーに戻す作業を自動化するのに役立つシステムを作成しようとしています。これまでのところ、すべてを把握しています。一致するサーバー フォルダーを正しく識別し、サーバー フォルダーをアーカイブ フォルダーに移動して、新しい作業をコピーして戻す間、一時的にバックアップすることができます。
しかし、私を支えているのはその最後のビットです。引数として渡されたフォルダーをサーバーにコピーする部分に到達するまで、すべてがうまく機能しています。
問題のコードは次のとおりです。
print "Match Source: " + match_src
archive_folder_name = match_src.rsplit('/', 1)[1]
print "Archive Folder Name: " + archive_folder_name
if not (os.path.isdir(os.path.join(os.path.dirname(match_src), "Archive"))):
os.mkdir(os.path.join(os.path.dirname(match_src), "Archive"))
archive_dst = os.path.join(os.path.join(os.path.dirname(match_src), "Archive"), archive_folder_name)
print "Archived Folder Destination: " + archive_dst
# okay, archive folder has been made. Now we need to move the old
# stuff to this folder.
shutil.move(match_src, archive_dst)
# okay, archive folder is filled. Now to move the new stuff there
print "Updated Source: " + updated_folder_path
print "Destination: " + os.path.dirname(match_src)
shutil.move(updated_folder_path, os.path.dirname(match_src))
これらの print ステートメントからの出力とエラー コードは次のとおりです。
ServerReturn mwl36$ python serverreturn_main.py /Users/mwl36/Desktop/Week\ 1
I'm on a Mac.
Path: /Users/mwl36/Desktop/Week 1
Folder: Week 1
Match Source: /Volumes/GCPSX Mac HD/ID/Marisa/Work for Student Workers/201315/SERVERTEST/Week 1
Archive Folder Name: Week 1
Archived Folder Destination: /Volumes/GCPSX Mac HD/ID/Marisa/Work for Student Workers/201315/SERVERTEST/Archive/Week 1
Updated Source: /Users/mwl36/Desktop/Week 1
Destination: /Volumes/GCPSX Mac HD/ID/Marisa/Work for Student Workers/201315/SERVERTEST
Traceback (most recent call last):
File "serverreturn_main.py", line 124, in <module>
main()
File "serverreturn_main.py", line 117, in main
shutil.move(updated_folder_path, os.path.dirname(match_src))
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 296, in move
copytree(src, real_dst, symlinks=True)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 206, in copytree
raise Error, errors
shutil.Error: [('/Users/mwl36/Desktop/Week 1/testfile.txt', '/Volumes/GCPSX Mac HD/ID/Marisa/Work for Student Workers/201315/SERVERTEST/Week 1/testfile.txt', "[Errno 22] Invalid argument: '/Volumes/GCPSX Mac HD/ID/Marisa/Work for Student Workers/201315/SERVERTEST/Week 1/testfile.txt'")]
どこが間違っていますか?shutil.move(src, dst) の呼び出しが最初は問題なく機能した場合、なぜここで barfing が発生するのでしょうか? 最初の呼び出しの後に遅延を追加しようとしましたが、効果はありませんでした。
編集:さらに奇妙なのは、実際に移動を実行しますが、デスクトップ上の古いフォルダーを削除することは決してないようです. 基本的に、フォルダーを DST の場所にコピーしますが、その後はクリーンアップしません。
編集 #2: os.listdir を呼び出すと、ディレクトリがなくなり、2 回目の移動呼び出しの前にそこにあるのは「アーカイブ」だけであることが示されます。明日、仕事中に copy() をテストして、コードに再びアクセスできるようにします。