os.system()内联表达式不会改变我的PATH

时间:2014-12-18 09:13:32

标签: python mingw windows-8.1 os.system

我正在使用 Python 2.7.6 Windows 8.1 ,我正在尝试使用os.sytem()在子进程中更改路径以使用某些UNIX该行中的命令(使用MinGW / MSYS环境):

输入

>>> os.system(r'set PATH=%PATH%;C:\MinGW\msys\1.0\bin && set PATH && ls')

输出

Path=ALL_MY_OLD_PATHS;C:\MinGW\msys\1.0\bin
"ls" no se reconoce como un comando interno o externo,
programa o archivo por lotes ejecutable.
1

我的意思是 ALL_MY_OLD_PATHS 到我系统中的所有目录,你可以看到 C:\ MinGW \ msys \ 1.0 \ bin 是正确的添加到我的路径,但是当它被执行时,“ls”命令是未知的。

我做错了什么?可能是因为时间延迟太小而无法用这个新的刷新PATH吗?我怎么能得到它?

1 个答案:

答案 0 :(得分:1)

您确定ls所在的目录没有拼写错误,即C:\MinGW\msys\1.0\bin是否正确位置?

修改路径的更简单方法可能是os.putenv

os.putenv("PATH", r'%s;C:\MinGW\msys\1.0\bin' % os.getenv("PATH"))

然后您可以按正常方式使用os.system,只需os.system("ls")等。

您可能还想考虑切换到更强大的subprocess module来调用外部命令。