使用Python/Django运行终端命令并保存返回值?

1 投票
4 回答
3494 浏览
提问于 2025-04-16 02:09

我有一个关于使用Python的问题。

我想知道如何用Python运行命令行的指令?运行完指令后,如何保存返回的结果呢?

比如说:

user@home:~$: ls -l
drwxr-xr-x 3 root root 4096 ..[etc] home
-rw-r--r-- 1 user user 357 ..[etc] examples.doc

我想做的就是运行命令ls -l,然后把返回的结果保存到数据库里,使用Python来实现。

我打算在Django框架中实现这个例子。

请问这样做可行吗?有没有什么命令是我不能执行的?

我该怎么实现呢?

任何链接、教程或建议都非常欢迎!

祝好。

4 个回答

1

你其实没有问对问题。正如其他人所说,os.systemsubprocess.Popen 是用来解决“如何在Python中运行一个命令”的方法。

但这并不是你真正想问的问题。你真正想知道的是,如何获取一个文件夹里的文件?这个问题的答案是使用 os.listdir()。你可以查看 这份文档 来了解更多。

2

reece的回答差不多是对的,但你需要在Popen后面加上 .communicate()。

所以应该是:

from subprocess import Popen, PIPE
stdout, stderr = Popen(['echo', 'Hello World!'], shell=False, stdout=PIPE).communicate()

或者在Python 2.7中你可以使用:

from subprocess import check_output
stdout = check_output(['echo', 'Hello World!'], shell=False)

查看subprocess模块:http://docs.python.org/library/subprocess.html

2

你需要使用 subprocess 这个模块 -- http://docs.python.org/library/subprocess.htmlhttp://docs.python.org/library/subprocess.html:

from subprocess import Popen, PIPE
stdout, stderr = Popen(['echo', 'Hello World!'], shell=False, stdout=PIPE)
print stdout.split('\n')

撰写回答