我需要从python运行shell命令并将输出存储在字符串或文件中

时间:2013-08-01 00:33:31

标签: python shell unix

我将使用 ls 作为示例:

我试过了:

str = call("ls")

str存储0。

我试过了:

str = call("ls>>txt.txt")

但没有运气(发生错误并且未创建& txt.txt)。

如何执行此直接任务。

[我已导入致电]

1 个答案:

答案 0 :(得分:0)

编辑:call只是在shell中运行一个命令,然后返回该命令的返回值。由于ls成功,call('ls')返回0。

如果您只是尝试运行ls,那么我建议您使用glob

from glob import glob
file_list = glob('*')

如果你想做一些更复杂的事情,我的建议就是这样使用subprocess.Popen()

from subprocess import Popen, PIPE

ls_proc = Popen('ls', stdout=PIPE, stderr=PIPE)
out, err = ls_proc.communicate()

注意,在stdoutstderr关键字中,PIPE可以替换为任何类文件对象,因此您可以根据需要将输出发送到文件。另外,你应该在使用它之前阅读Popen.communicate(),因为如果你调用的命令挂起,你的python例程也会挂起。