Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用“运行bash脚本”;“生活”;Python脚本中的输出?_Python_Shell - Fatal编程技术网

使用“运行bash脚本”;“生活”;Python脚本中的输出?

使用“运行bash脚本”;“生活”;Python脚本中的输出?,python,shell,Python,Shell,我想知道是否有可能在Python脚本中运行bash脚本并获得bash脚本输出“live”(而不是在Python脚本运行bash脚本之后,我知道如何做到这一点) 您可能会问我为什么要使用Python脚本:实际上,我想构建一个漂亮的CLI接口,我正在使用Inquirer来实现这一点。此界面允许用户执行使用bash脚本实际执行的任务。这就是为什么我不使用执行其他脚本的bash脚本。您可以使用以下实现实时获取shell脚本的STDOUT 代码: cmd="whoami" p = subprocess.P

我想知道是否有可能在Python脚本中运行bash脚本并获得bash脚本输出“live”(而不是在Python脚本运行bash脚本之后,我知道如何做到这一点)


您可能会问我为什么要使用Python脚本:实际上,我想构建一个漂亮的CLI接口,我正在使用Inquirer来实现这一点。此界面允许用户执行使用bash脚本实际执行的任务。这就是为什么我不使用执行其他脚本的bash脚本。

您可以使用以下实现实时获取shell脚本的STDOUT

代码:

cmd="whoami"
p = subprocess.Popen(cmd, stdout=subprocess.PIPE, bufsize=1)
for line in iter(p.stdout.readline, b''):
    print(line)
p.stdout.close()
p.wait()
>>> python3 test.py 
b'milanbalazs\n'
输出:

cmd="whoami"
p = subprocess.Popen(cmd, stdout=subprocess.PIPE, bufsize=1)
for line in iter(p.stdout.readline, b''):
    print(line)
p.stdout.close()
p.wait()
>>> python3 test.py 
b'milanbalazs\n'

分享一些关于您到目前为止所做工作的代码您必须使用该类并捕获输出文件(
stderr
stdout
)。因此,您希望从终端“live”捕获输入数据?我想捕获脚本输出并实时打印,我不想等到bash脚本执行结束。milanbalazs的回答准确,解决了我的问题!谢谢,这正是我想做的!