6

我有两个 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 上运行它。有时我从使用子进程中得到非常奇怪的结果,当第三个脚本一次一个独立地运行时,它无法在网络上找到其他东西。

4

1 回答 1

15

你应该使用subprocess. 并不是说它有任何区别,它只是一个旨在替换的较新模块os.system(请查看本节以进行直接替换)。它还具有更多功能,以防您有一天需要它们。

简而言之:没有理由使用os.system(除了与旧版本的 Python 兼容)。

于 2013-06-13T18:32:19.747 回答