python获取shell输出及返回码_如何执行shell命令获取Python中命令后的输出和pwd
我將stdout重定向到pwd命令的stderr。如果stdout為空且stderr不是路徑,那么stderr是命令的錯(cuò)誤
import subprocess as sub
def execv(command, path):
command = 'cd %s && %s && pwd 1>&2' % (path, command)
proc = sub.Popen(['/bin/bash', '-c', command],
stdout=sub.PIPE, stderr=sub.PIPE)
stderr = proc.stderr.read()[:-1]
stdout = proc.stdout.read()[:-1]
if stdout == '' and not os.path.exists(stderr):
raise Exception(stderr)
return {
"cwd": stderr,
"stdout": stdout
}更新:這里是更好的實(shí)現(xiàn)(使用pwd的最后一行,不要使用stderr)
def execv(command, path):
command = 'cd %s && %s 2>&1;pwd' % (path, command)
proc = sub.Popen(['/bin/bash', '-c', command],
env={'TERM':'linux'},
stdout=sub.PIPE)
stdout = proc.stdout.read()
if len(stdout) > 1 and stdout[-1] == '\n':
stdout = stdout[:-1]
lines = stdout.split('\n')
cwd = lines[-1]
stdout = '\n'.join(lines[:-1])
return {
"cwd": cwd,
"stdout": man_to_ansi(stdout)
}
總結(jié)
以上是生活随笔為你收集整理的python获取shell输出及返回码_如何执行shell命令获取Python中命令后的输出和pwd的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql 命令行 设置同步_MySQL
- 下一篇: 两栈共享空间