2013-03-22 74 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('\\\\','\\\\\\\\')