2013-03-22 76 views
-2

我有我的本地機器上運行一個程序,它使用了一些文件。我通過創建參考文件:os.path.join(tempfile.gettempdir(), 'filename.txt')蟒蛇和Windows雙反斜線

在那之後我運行它接受一些參數--log-file filepath其中filepath是我剛纔上面解釋了文件中的一個項目。

在我的機器蟒蛇創建的路徑反斜槓而不是雙反斜線和程序抱怨,因爲它被認爲是一個轉義字符,應該是一個雙反斜線。

是否有確保我得到與蟒蛇雙反斜線工作路徑的任何標準的方式?我可以使用正則表達式,但我更喜歡類似os.提供的東西。也許我錯過了一些東西。

我打電話使用subprocess.Popen程序:

self._proc = subprocess.Popen(command.split(' '))

其中command是一樣的東西pcix.exe --log-file file_path

而且,我的控制檯上運行的測試表明我的蟒蛇不會產生雙反斜線路徑:

>>> print os.path.join(tempfile.gettempdir(), "test.txt") 
c:\users\manilo~1\appdata\local\temp\test.txt 

退出原稿t命令產生相同的路徑:

>>> os.path.join(tempfile.gettempdir(), "test.txt") 
c:\users\manilo~1\appdata\local\temp\test.txt 

任何想法爲什麼?

P.S.我運行平臺爲CPython

+0

請出示你如何調用第二個程序。 – 2013-03-22 17:08:35

+0

我編輯了我的問題,謝謝。 – 2013-03-22 17:12:40

+0

Windows不使用雙反斜槓; Python字符串文字。你打印的內容不是字符串文字;它應該是一個完全合理的Windows路徑。離開'print',你會用雙反斜槓以字符串形式看到它。 – 2013-03-22 17:13:37

回答

-1

嘗試:

print os.path.join(tempfile.gettempdir(), "test.txt").replace('\\\\','\\\\\\\\')