在python中,将system命令的输出作为字符串

S4M*_*S4M 27 python shell command-line

在python中,我可以使用os或subprocess运行一些系统命令.问题是我无法将输出作为字符串.例如:

>>> tmp = os.system("ls")
file1 file2
>>> tmp
0
Run Code Online (Sandbox Code Playgroud)

我有一个旧版本的子进程没有函数check_out,我更喜欢一个不需要更新该模块的解决方案,因为我的代码将运行在我没有完全管理员权限的服务器上.

这个问题似乎微不足道,但我找不到一个简单的解决方案

Har*_*non 68

用途os.popen():

tmp = os.popen("ls").read()
Run Code Online (Sandbox Code Playgroud)

更新的方式(> python 2.6)是这样做的subprocess:

proc = subprocess.Popen('ls', stdout=subprocess.PIPE)
tmp = proc.stdout.read()
Run Code Online (Sandbox Code Playgroud)