簡體   English   中英

linux上的python中的os.system vs subprocess

[英]os.system vs subprocess in python on linux

我有兩個python腳本。 第一個腳本調用第二個腳本的表,我需要在其中執行第三方python腳本。 它看起來像這樣:

# the call from the first script. 
cmd = "qsub -sync y -b -cwd -V -q long  -t 1-10 -tc 5 -N 'script_two' ./script2.py"

script2thread = pexpect.spawn(cmd)

# end of script 1 

所以我在這里發送10個工作到隊列。 在腳本2中,我有一個基於task_id的case語句。 在每一個中,我使用不同的參數對第三方腳本進行類似的調用。

...
elif(task_id == 4)
subprocess.call(./script3)

# or 

os.system(./script3 , shell=True)

這是我的問題所在。 使用其中一個是否有差異/好處? 我知道在Windows上使用一個而不是另一個因為支持問題而產生很大的不同但是我在Linux上並且無意在Windows上運行它。 有時我使用子進程得到非常奇怪的結果,當第三個腳本一次獨立運行時,它無法在網絡上找到其他東西。

你應該使用subprocess 它並沒有任何區別,它只是一個更新的模塊,旨在取代os.system (看看本節的替代品)。 它還具有更多功能,以防您有一天需要它們。

簡而言之:沒有理由使用os.system (除了與舊版本的Python兼容)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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