我在循环的每个迭代中都有python中的for循环,我想运行bash脚本,并在终止后继续循环并再次运行bash脚本:
for batch in something:
proc = Popen(['./mybash.sh'])
proc.wait()
mybash.sh脚本将计算内容并使用echo
显示一个值。但是,当我运行此代码时,它似乎只执行一次mybash.sh脚本,因为我只能看到echo
仅在第一次迭代中显示的值。代码有什么问题?顺便说一句,我正在使用python 3.5
答案 0 :(得分:0)
it seems that it executes mybash.sh script only once
的原因可能是由于:
proc.wait()
不返回。./mybash.sh
无法正常工作。您可以按以下方式更改脚本:
for batch in something:
# to check the looping times
print(batch)
proc = Popen(['./mybash.sh'])
# to check if the mybash.sh exit normally
print(proc.wait())
答案 1 :(得分:0)
Popen
仅启动一个过程。您可能想要类似的东西
from subprocess import run, PIPE
for batch in something:
print(run(['./mybash.sh'],
stdout=PIPE, stderr=PIPE,
check=True, universal_newlines=True).stdout)
check=True
假定您的脚本返回了有用且有效的退出代码。
有关(更多!)的更多信息,请参见https://stackoverflow.com/a/51950538/874188