問題: Linux で shutil.copy() を使用してファイルを FAT16 マウント ファイルシステムにコピーすると失敗します (Python 2.7.x)。失敗は shutil 内部エラーであり、実際には shutil.chmod で失敗し、shutil.copy が実行されているようです。
FAT ではパーミッションがサポートされていないため、シェル chmod も失敗します。
質問: これをうまく回避する方法はありますか? たとえば、次のようないくつかのオプションがあることを知っています。
- copyfile を使用 - ターゲット ディレクトリだけでなく実行可能なフル パスが必要なため、理想的ではありません
- シェル cp を実行してファイルをコピーする
- ファイルモードを変更しようとしない独自のコピー関数を作成する
Python または FAT マウント オプションでこれを回避する方法はありますか? mount -t vfat -o umask=000 /dev/loop0 /mnt/foo を実行して、プログラム内にファイルシステムをマウントします。
shutil.copy 内で例外が発生し、shutil.copy() が shutil.chmod() から IOException をキャッチすると、呼び出し元の関数に IOException を渡す前にターゲット ファイルを削除するように見えるため、例外をキャッチしても役に立ちません。
アイデアはありますか、それとも 1 ~ 3 から 1 つを選択する必要がありますか?
ハンヌ