flo*_*ree 9 python linux subprocess
我正在尝试使用子进程执行简单的echo操作:
import subprocess
import shlex
cmd = 'echo $HOME'
proc = subprocess.Popen(shlex.split(cmd), shell=True, stdout=subprocess.PIPE)
print proc.communicate()[0]
Run Code Online (Sandbox Code Playgroud)
但它什么都不打印.即使我将命令更改为echo "hello, world"
它仍然没有打印任何内容.任何帮助表示赞赏.
jfs*_*jfs 12
在Unix上shell=True
暗示第2个和后面的参数是针对shell本身的,使用字符串将命令传递给shell:
import subprocess
cmd = 'echo $HOME'
proc = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
print proc.communicate()[0],
Run Code Online (Sandbox Code Playgroud)
你也可以把它写成:
import subprocess
cmd = 'echo $HOME'
print subprocess.check_output(cmd, shell=True),
Run Code Online (Sandbox Code Playgroud)
从子进程'docs:
在Unix上
shell=True
,shell默认为/ bin/sh.如果args是一个字符串,则该字符串指定要通过shell执行的命令.这意味着字符串的格式必须与在shell提示符下键入时完全相同.这包括,例如,引用或反斜杠转义带有空格的文件名.如果args是一个序列,则第一个项指定命令字符串,并且任何其他项将被视为shell本身的附加参数.也就是说,Popen相当于:
Popen(['/bin/sh', '-c', args[0], args[1], ...])
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
15569 次 |
最近记录: |