如何从Python运行内联Shell脚本?
我在我的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])