操作系统.linux下python中的System vs subprocess



我有两个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兼容)。

最新更新