我在一台windows机器上工作,我想在shell中设置一个变量,并想将它与另一个shell命令一起使用,比如:
set variable = abc
echo %variable%
我知道我可以使用os.system(com1 && com2)
来实现这一点,但我也知道,这被认为是“坏样式”,使用subprocess模块应该是可能的,但是我不知道怎么做。
以下是我目前所得到的:
^{pr2}$
但这两行似乎都不起作用,两个命令都不能执行。另外,如果我输入不存在的命令,我不会得到错误。正确的方法是什么?在
Tags:
Popen
只能执行一个命令或shell脚本。您只需使用;
将整个shell脚本作为单个参数提供来分隔不同的命令:也可以使用多行:
^{pr2}$最后一个
0
是进程的返回代码communicate
方法用于写入进程的stdin。在您的例子中,进程在运行set variable
之后立即结束,因此对communicate
的调用实际上没有做任何事情。在您可以生成一个shell,然后使用
communicate
来编写命令:请注意,}读取。在
communicate
完成后也会关闭流,因此不能多次调用它。如果您想要一个交互式会话,您需要直接写入proc.stdin
,并从{顺便说一句:您可以为
Popen
指定一个env
参数,这样根据具体情况,您可能希望这样做:显然,这将使用
echo
可执行文件,而不是shell内置的,但它避免使用shell=True
。在相关问题 更多 >
编程相关推荐