Python subprocess.Popen-`cwd`不受尊重
不管出于什么原因Python subprocess.Popen-`cwd`不受尊重,python,subprocess,python-2.6,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\D
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:\
这是错误的。如果您只是试图更改当前工作目录,您可以使用:
os.chdir('c:\\test')
请注意双反斜杠,因为反斜杠是Python中需要转义的特殊字符
此外,要检查当前工作目录,您可以使用:
os.getcwd()
使用Win7和Python2.6和2.7进行测试,工作正常(STDOUT::C:\test)
因此,这似乎与WinXP有关。使用Win7和Python2.6和2.7进行测试,结果与预期一致(STDOUT::C:\test)。所以这似乎与WinXP有关。@RobertCaspary认为,好吧,谢谢你,Robert,在回答中总结这一点,要点是你的。不起作用,试过了<代码>子流程不支持主流程工作目录。启动时,它将获得默认的终端启动位置,并从那里开始。