2009-12-26 114 views
0

我試圖在Python中使用一些長文件路徑(Windows),並遇到了一些問題。在閱讀here這個問題後,看起來好像我需要將'\\?\'附加到長文件路徑的前面,以便將它們與os.stat(filepath)結合使用。我遇到的問題是我無法在Python中創建以反斜槓結尾的字符串。 here這個問題指出,你甚至不能在Python中用一個'\'字符結束字符串。如何將'\?'追加到Python中的文件路徑的前端

在任何Python標準庫或其他任何地方有什麼可以讓你簡單地將'\\?\'附加到你已有的文件路徑的前面嗎?或者是否有任何其他解決方法可以在Windows中使用Python處理長文件路徑?這似乎是一件簡單的事情,但我無法想象出我的生活。

+0

「追加到前面」是一個令人困惑的短語。你可能意思是「prepend」。 –

回答

3

「\\\\?\\」應該正好給你想要的字符串。

較長的答案:當然你可以在Python中以反斜槓結束一個字符串。當它是一個「原始」字符串時(一個以'r'爲前綴的),你不能這樣做。您通常使用的字符串包含(大量的)反斜槓(避免臭名昭著的「倚牙籤」綜合症;-))

+0

原始字符串文字是逃避轉義序列('\「','\ n','\(','\ s'等),這就是爲什麼你不能以反斜槓結尾的原因。 – 2009-12-26 14:30:34

+0

Yep ,這是有效的。我曾嘗試過,並得到一個錯誤,但事實證明,這是因爲我一直在使用文件路徑如「\\?\ D:somefile」而不是「\\?\ D: \ somefile」。 –

0

即使原始字符串,你可以在一個反斜槓結束與:

>>> print r'\\?\D:\Blah' + '\\' 
\\?\D:\Blah\ 

甚至:

>>> print r'\\?\D:\Blah' '\\' 
\\?\D:\Blah\ 

因爲Python會連接到的文字串爲一體。

相關問題