os.system()和subprocess.call()有什么不同吗?

时间:2018-03-09 01:36:28

标签: python python-2.7

以下两种方法之间是否存在功能差异?

os.system("echo $HOME")
subprocess.call("echo $HOME")

这是与this one类似的问题,但这个问题确实更多地关注subprocess.Popen()

1 个答案:

答案 0 :(得分:1)

如果您在Windows上运行python(cpython),<built-in function system> os.system将在窗帘_wsystem下执行,而如果您使用非Windows操作系统,它将会使用system

虽然subprocess.call将在Windows上使用CreateProcess,在基于posix的操作系统中使用_posixsubprocess.fork_exec

以上几点应该回答你关于主要差异(结构性)的问题......那就是说,我建议你遵循os.system文档中最重要的建议,即:

  

子进程模块为产卵提供了更强大的功能   新流程并检索其结果;使用该模块是   比使用这个功能更好。请参阅更换旧功能   使用子流程文档中的子流程模块部分   一些有用的食谱。