私は、os.rename()
について疑問に思っています。はファイルが存在すると言っていますが、os.rename()
には見つかりません。ここでは、コードスニペットです:Y:\home\Paul\PaulsBilder\images\..\import\batch0\2012-05 Neuruppin\12-05 - 0 2.JPG
という名前のファイルにこれを実行するWindows 10のPython:os.rename()はos.path.exists()が見つけたファイルを見つけることができません。
try:
if (os.path.exists(sourcePath)):
print('Safe: %s does exist!' % sourcePath)
os.rename (sourcePath, newPath)
except Exception as e:
print('Error renaming "%s":' % sourcePath)
raise e
は、次のような出力が得られた:
Safe: Y:\home\Paul\PaulsBilder\images\..\import\batch0\2012-05 Neuruppin\12-05 - 0 2.JPG does exist!
Error renaming "Y:\home\Paul\PaulsBilder\images\..\import\batch0\2012-05 Neuruppin\12-05 - 0 2.JPG":
Traceback (most recent call last):
:
WindowsError: [Error 3] Das System kann den angegebenen Pfad nicht finden
(ドイツ語版のWindows:「指定されたパスが見つかりません。」)私がしてきましたこのスニペットを問題なく使用していますが、おそらくファイル名に空白が含まれていることはありません...しかし、スペースをアンダースコアに置き換えると、ファイル名はまだ見つかりません。
何か間違っている必要がありますが、何ですか?
EDIT:/../
コンポーネントを削除すると(その周囲にos.normpath()
をラップしても)役立ちません。
あなたは '\画像を削除するとどうなりますか\ ..'パスから? – Kevin
ループ内の複数のファイルでこれをやっていますか? 'os.rename'を' if'の中に置いて、パスが存在しなければ実行しないのはどうですか?それはまだ実行しようとしていますか? – BrenBarn
@BrenBarnですが、私は 'ERROR_PATH_NOT_FOUND'(3)が悪いパスに対してこのコンテキスト(すなわち' MoveFileEx'を呼び出す)でのみ発生するべきであると思っています。ソースファイルが見つからない場合、エラーは 'ERROR_FILE_NOT_FOUND'(2)でなければならず、ターゲット名がすでに存在する場合、エラーは' ERROR_ALREADY_EXISTS'(183)でなければなりません。 – eryksun