使用Python/Django运行终端命令并保存返回值?
我有一个关于使用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.system
或 subprocess.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.html 和 http://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')