【问题标题】:Run a terminal command and saving the values returned using Python/Django?运行终端命令并保存使用 Python/Django 返回的值?
【发布时间】:2010-08-01 18:06:43
【问题描述】:

我有一个关于 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中实现上面的例子。

我可以知道这是否可能吗?我不能执行什么样的命令?

如何实现?

欢迎提供任何链接、教程和建议!

最好的问候。

【问题讨论】:

    标签: python linux django command-line


    【解决方案1】:

    你需要使用子进程——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')
    

    【讨论】:

    【解决方案2】:

    reece 的answer 几乎可以工作,但你需要在 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)
    

    查看子进程:http://docs.python.org/library/subprocess.html

    【讨论】:

      【解决方案3】:

      您实际上并没有在这里问正确的问题。正如其他人所说,os.system 或 subprocess.Popen 是“如何在 Python 中运行 shell 命令”这个问题的答案。

      但这不是您真正要问的问题。您真正想知道的是,如何获取目录中的文件?这个问题的答案是使用os.listdir()。见the documentation。

      【讨论】:

        【解决方案4】:

        查看标准子流程模型 - 它有一个这样做的示例:

        http://docs.python.org/library/subprocess.html#replacing-shell-pipeline

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-11-12
          • 2018-12-28
          • 2018-02-12
          • 2020-06-28
          • 2018-01-11
          • 2013-04-14
          • 1970-01-01
          相关资源
          最近更新 更多