关于shell:python os.system命令行返回值返回python

python os.system command line return value back to python

本问题已经有最佳答案,请猛点这里访问。

我正在调用第二个python脚本,该脚本是从我的脚本中为命令行编写的,使用

1
os.system('insert command line arguments here')

这很好,运行终端中的第二个脚本。我不想在终端中输出这个,只想访问正在打印的列表和变量。是否可以使用os.system?或者,我需要用别的东西吗?


除了打盹时间的答案,您还可以使用:

1
2
3
import subprocess
output = subprocess.check_output(['ls'])
print(output)

您可以使用子流程模块并通过管道重定向其输出。

例如,获取当前目录中的文件列表。

1
2
3
import subprocess
proc = subprocess.Popen(['ls'], stdout=subprocess.PIPE)
print(proc.stdout.readlines())

更多详细信息,请参阅此处从python中os.system()的命令重定向stdio。

编辑:如果你试图将参数传递给子进程,popen每个进程都有自己的引号。

1
proc = subprocess.Popen(['python','test.py','-b','-n'], stdout=subprocess.PIPE)

以及文档https://docs.python.org/2/library/subprocess.html