subprocess.Popen - `cwd`没有兑现

时间:2013-08-29 11:40:08

标签: python subprocess python-2.6

无论出于何种原因,

from subprocess import Popen, PIPE, STDOUT
handle = Popen('echo %CD%', shell=True, stdout=PIPE, stderr=STDOUT, stdin=PIPE, cwd=r'C:\test')
print 'STDOUT::',handle.stdout.readline().strip()

给我:

STDOUT:: C:\Documents and Settings\myusername\Desktop

Windows XP(无论出于何种原因)
Python 2.6.6

这可能与Windows如何在行中执行命令有任何相似之处,例如:

C:\> cd "C:\test\" && echo %CD%
C:\

哪个是错的。

2 个答案:

答案 0 :(得分:2)

如果您只是想更改当前的工作目录,可以使用:

os.chdir('c:\\test')

请注意双反斜杠,因为反斜杠是Python中需要转义的特殊字符。

另外,要检查当前的工作目录,可以使用:

os.getcwd()

答案 1 :(得分:0)

使用Win7和Python 2.6和2.7测试,按预期工作(STDOUT :: C:\ test)。

所以这似乎与WinXP有关。