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

I need to run a shell command from python and store the output in a string or file

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

我将以ls为例:

我试过:

1
str = call("ls")

STR存储0。

我试过:

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

但运气不好(发生错误,未创建&txt.txt)。

我该如何执行这个直接的任务呢?

[我输入了呼叫]


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

如果你只是想运行ls,那么我建议使用glob

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

如果您想做更复杂的事情,我建议您使用这样的subprocess.Popen()

1
2
3
4
from subprocess import Popen, PIPE

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

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