2017-02-22 74 views
2

私は奇妙な問題があります。特定のファイルの名前を変更することも、削除することもできません。私はFileNotFoundErrorを取得します。Python FileNotFoundError長いファイル名を処理する方法

同様の質問が以前に尋ねられました。この問題に対する解決策は、ファイル名だけでなく、完全なパスを使用することでした。

私のスクリプトは、ファイル名のみを使用する前に動作しましたが、別のファイルを使用していましたが、フルパスを使用してもこのエラーが発生します。

ファイル名でエラーが発生しているようですが、解決できません。

import os 

cwd = os.getcwd() 

file = "003de5664668f009cbaa7944fe188ee1_recursion1.c_2016-04-21-21-06-11_9bacb48fecd32b8cb99238721e7e27a3." 
change = "student_1_recursion1.c_2016-04-21-21-06-11_9bacb48fecd32b8cb99238721e7e27a3." 

oldname = os.path.join(cwd,file) 
newname = os.path.join(cwd,change) 

print(file in os.listdir()) 
print(os.path.isfile(file)) 
os.rename(oldname, newname) 

私は、次のような出力が得られます。

True 
False 
Traceback (most recent call last): 
    File "C:\Users\X\Desktop\code\sub\test.py", line 13, in <module> 
    os.rename(oldname, newname) 
FileNotFoundError: [WinError 2] Das System kann die angegebene Datei nicht finden: 'C:\\Users\\X\\Desktop\\code\\sub\\003de5664668f009cbaa7944fe188ee1_recursion1.c_2016-04-21-21-06-11_9bacb48fecd32b8cb99238721e7e27a3.' -> 'C:\\Users\\X\\Desktop\\code\\sub\\student_1_recursion1.c_2016-04-21-21-06-11_9bacb48fecd32b8cb99238721e7e27a3.' 
[Finished in 0.4s with exit code 1] 

私はフォルダにWindowsの検索を使用する場合は、このファイルが存在しています。 フルパスを使用しようとすると、ファイルを見つけることができないというエラーが表示されます。

私はまた、ユーザが示唆したので、文字列にユニコード文字列u "+ filenameを追加しようとしました。

パスの長さは<です。問題の原因は何ですか?

答えて

1

これは、Windows/Pythonのものです。末尾にピリオドが付いたファイル名がトリムされることがあります。

一時的な作業の場合は、回避策として2つの末尾の期間を使用できます。

+0

ありがとうございました!それは実際にファイル名の傍受を引き起こす末尾の期間でした。 – Ali

-2

は、これは正確に答え(私はそのための担当者が不足している)が、...ではありません

つの思考:

A)、それらのファイル名がピリオドで終わることになっていますか?

B)の代わりにバックスラッシュをエスケープするのには、前方に使用することができ、ここでスラッシュ(すなわち、C:/ .../.../...)

関連する問題