如何从Python运行内联Shell脚本?

3 投票
1 回答
2841 浏览
提问于 2025-04-17 11:15

我在我的Python文件里有一个小的shell脚本,放在一个字符串里。
现在我想通过 subprocess.call() 来运行这个脚本,我在想最好的方法是什么。

我最开始的想法是把这个脚本写入一个 StringIO 对象,然后通过 stdin=... 来指定它,但不幸的是,StringIO 没有 fileno() 这个方法,所以不能这样做。

当然,我可以使用 stdin=subprocess.PIPE,然后通过 subprocess.communicate() 来写入它,但我在想有没有更简单的方法。

1 个回答

8

在编程中,有时候我们需要让程序在特定的条件下执行某些操作。这就像给程序设定了一些规则,只有当这些规则被满足时,程序才会按照我们的要求去做。

比如说,你可能想要让程序在用户输入一个数字时,检查这个数字是否是正数。如果是正数,程序就会显示“这是一个正数”;如果不是,程序就会显示“这不是一个正数”。这样,程序就能根据用户的输入做出不同的反应。

这种根据条件来决定程序行为的方式,通常被称为“条件语句”。它们帮助程序做出决策,就像我们在生活中根据情况来选择不同的行动一样。

所以,理解这些条件语句是学习编程的一个重要部分,它能让你的程序变得更加智能和灵活。

import subprocess

script = """
for x in 1 2 3 ; do echo $x ; sleep 1 ; done
"""

subprocess.call(['sh', '-c', script])

撰写回答