以下两种方法之间是否存在功能差异?
os.system("echo $HOME")
subprocess.call("echo $HOME")
这是与this one类似的问题,但这个问题确实更多地关注subprocess.Popen()
。
答案 0 :(得分:1)
如果您在Windows上运行python(cpython),<built-in function system>
os.system将在窗帘_wsystem下执行,而如果您使用非Windows操作系统,它将会使用system。
虽然subprocess.call将在Windows上使用CreateProcess,在基于posix的操作系统中使用_posixsubprocess.fork_exec。
以上几点应该回答你关于主要差异(结构性)的问题......那就是说,我建议你遵循os.system文档中最重要的建议,即:
子进程模块为产卵提供了更强大的功能 新流程并检索其结果;使用该模块是 比使用这个功能更好。请参阅更换旧功能 使用子流程文档中的子流程模块部分 一些有用的食谱。