簡體   English   中英

bash PIPE 等效於 Python

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM