【问题标题】:Call a shell command in python在python中调用shell命令
【发布时间】:2015-07-29 21:36:36
【问题描述】:

我需要在 python 中执行一个 shell 命令,并且需要将结果存储到一个变量中。我该如何执行此操作。 我需要执行openssl rsautl -encrypt -inkey key 并将结果传递给变量。

---编辑---

如何执行

perl -e '打印“你好世界”' | openssl rsautl -encrypt -inkey 密钥

在python中获取输出..

【问题讨论】:

标签: python linux shell


【解决方案1】:

您可以使用subprocess.check_output

from subprocess import check_output

out = check_output(["openssl", "rsautl", "-encrypt", "-inkey", "key"])

输出将存储在out

【解决方案2】:

执行shell命令的简单方法是os.popen

import os

cmdOutput1 = os.popen("openssl rsautl -encrypt -inkey key").readlines()
cmdOutput2 = os.popen("perl -e 'print \"hello world\"' | openssl rsautl -encrypt -inkey key").readlines()

只需要你想以一个字符串的形式运行的命令。它将返回一个打开的文件对象。通过使用.readlines(),这个打开的文件对象将被转换为一个列表,其中列表中的一个项目将对应于您的命令的单行输出。

【讨论】:

  • 虽然这篇文章可能会回答这个问题,但添加一些解释并可能添加一些指向相关文档的链接仍然是一个好主意。具有良好解释和参考的答案通常对当前的 OP 和未来的访问者都更有用。完整详细的答案也更有可能吸引正面投票。
  • 老实说,我认为命令本身很容易解释,但你说得对,我仍然应该解释一下 -> 我已经相应地更新了我的答案。
  • 我从来没有说过这不是不言自明的。仅该代码块本身就不太可能被接受和(或)赞成。好的答案通常会解释为什么 OP 的代码会失败,可以采取哪些措施来纠正它,也许还有一些额外的相关建议。
  • 如果没有 Perl 的帮助,Python 并不是不能write("Hello world")
  • 我不是在质疑他想要运行的命令,我只是展示了它是如何完成的 ;-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-21
  • 1970-01-01
  • 2022-08-18
  • 1970-01-01
相关资源
最近更新 更多