[英]bash PIPE equivalent in Python
我正在将bash
脚本转换为python
脚本。 在 bash 脚本中,有一个部分基本上发送邮件,例如
( echo "some_body"
echo "some header"
) | ./sendmail to_user@mail.com
我正在尝试像这样转换它
from subprocess import Popen, PIPE, STDOUT
p = Popen(['./sendmail', 'to_user@mail.com'], stdout=PIPE, stdin=PIPE, stderr=PIPE)
stdout_data = p.communicate(input='data_to_write')[0]
但我不确定如何传递多个输入,例如 bash 脚本中显示的多重echo
。
附加问题:
除此之外,我还有一个问题,在 bash 脚本中,始终有一个命令位于顶部,例如
. /opt/../some_necessary_exports.sh
.
.
. other stuff
这里some_necessary_exports.sh
就像
export SOMETHING="some_thing"
export SOME_OTHER_THING="some_other_thing"
.
.
.
在 python 脚本中,我使用子进程模块调用 Linux 命令,例如——
p1 = Popen(['bash', 'some_necessary_exports.sh'], stdout=PIPE, stdin=PIPE, stderr=PIPE)
p2 = Popen(['bash', 'other_command'], stdout=PIPE, stdin=PIPE, stderr=PIPE)
p3 = Popen(['bash', 'other_command'], stdout=PIPE, stdin=PIPE, stderr=PIPE)
我不确定这些导出是否会保留在其他命令中。 处理这个问题的最佳方法是什么?
只需将要发送的字符串与它们之间的换行符连接起来。
stdout_data = p.communicate(input=some_header + "\n" + some_body)[0]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.