私はWindows上でPythonコードを実行していて、パスを使ってすべてのファイル名をファイルにトラバースして格納しようとしています。しかし、Windowsでは260文字の制限があります。Python拡張パス長の使い方
os.chdir(self.config.Root_Directory_Path())
for root, dirs, files in os.walk("."):
file_list.extend(join(root,f) for f in files)
file_name_sorted = sorted(file_list)
#file_sorted = sorted(file_list, key=getsize)
#time.strftime("%m/%d/%Y %I:%M:%S %p" ,time.localtime(os.path.getmtime(file)))
f = open(self.config.Client_Local_Status(),'wb')
for file_name in file_name_sorted:
if (os.path.exists(file_name)):
#f.write((str(os.path.getmtime(file_name)) + "|" + file_name + "\n").encode('utf-8'))
pass
else:
print(file_name + "|" + str(len(file_name) + len(originalPath)) + "\n")
print(os.path.getmtime(file_name))
#f.write((str(os.path.getmtime(file_name)) + "|" + file_name + "\n").encode('utf-8'))
f.close()
エラーのため、os.path.getmtime(file_name)は例外ファイルを検出しません。どうすればこの問題を解決できますか?私は
http://msdn.microsoft.com/en-us/library/aa365247%28VS.85%29.aspx
で提案されているように、プレフィックスとして// /?文字を使用してみました。しかし、// /?文字を使用することに成功しませんでした。
私はos.path.getmtimeを使用してみました( "////?//" + file_nameに)エラー無効なパス
を#Threwして修正を提案してください
@PedroRomano問題ありません。おかげさま...いくつかの助けを楽しみにしています – Romaan
@PedroRomano私は今、ほぼ2日間狂気のような解決策を探していました。あなたがこの質問を好きなら、これをupvoteして、多くの人にこれを見せてもらいたいと思います。ありがとう – Romaan
スラッシュを使用している場合は、それを2倍にしないでください。バックスラッシュは(非生の)文字列のためのエスケープ文字であるため、二重にする必要があるのはバックスラッシュだけです。スラッシュは完全に普通の文字です。 '' ////?// ''の代わりに' '//?/''を実行して何が起こるか見てみてください。 – abarnert