[英]Python program stops after executing subprocess.Popen once
我試圖使用python中的循環多次執行命令行程序。自然地,我使用了子進程模塊來執行此任務。但是在執行python腳本時,命令行程序先運行一次然后停止。它也不再次運行,也沒有它返回到python腳本。下面是我編寫的循環.``commandline''是我正在運行的命令及其參數
for i in range(len(final)):
ss=str(final[i][0])
endpos=str(final[i][1])
op='/home/nishant/op'+str(i)
commandline='/home/nishant/project/LOOV/build/./LOOV -v vid -output op -ss ss -endpos endpos -lang eng -print_text'
subprocess.Popen(commandline,shell=True).communicate()
如果要執行命令,等待並檢查代碼0退出(未遇到錯誤),則應嘗試使用check_output
,如下所示:
import subprocess
your_command = 'you command(s) here'
subprocess.check_output(your_command, shell=True)
import subprocess
A = subprocess.Popen("command", shell = True, stdout = subprocess.PIPE, stderr = subprocess.PIPE)
print(A.communicate)
我很確定您可以從那里拿走它。
嘗試鉛 。
pip install plumbum
由於我不知道它的上下文,因此我使用ifconfig
命令開發了一個小示例,該示例由for組成。
from plumbum.cmd import grep, ifconfig
from plumbum import FG, BG
lst = ['Link', 'inet', 'LOOPBACK', 'BROADCAST', '127', 'Eth']
for l in lst:
command = ifconfig | grep[l]
f = command & BG
output = f.stdout
print (output)
輸出:
docker0 Link encap:Ethernet Endereço de HW 02:42:cd:ab:75:e2
enp3s0 Link encap:Ethernet Endereço de HW 10:c3:7b:c4:21:e4
endereço inet6: fe80::8267:7328:8542:3434/64 Escopo:Link
lo Link encap:Loopback Local
inet end.: 172.17.0.1 Bcast:0.0.0.0 Masc:255.255.0.0
inet end.: 192.168.1.34 Bcast:192.168.255.255 Masc:255.255.0.0
endereço inet6: fe80::8267:7328:8542:3434/64 Escopo:Link
inet end.: 127.0.0.1 Masc:255.0.0.0
endereço inet6: ::1/128 Escopo:Máquina
UP LOOPBACK RUNNING MTU:65536 Métrica:1
UP BROADCAST MULTICAST MTU:1500 Métrica:1
UP BROADCAST RUNNING MULTICAST MTU:1500 Métrica:1
inet end.: 127.0.0.1 Masc:255.0.0.0
docker0 Link encap:Ethernet Endereço de HW 02:42:cd:ab:75:e2
enp3s0 Link encap:Ethernet Endereço de HW 10:c3:7b:c4:21:e4
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.