Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 何时应该使用Popen()以及何时应该使用call()?_Python_Call_Subprocess_Popen - Fatal编程技术网

Python 何时应该使用Popen()以及何时应该使用call()?

Python 何时应该使用Popen()以及何时应该使用call()?,python,call,subprocess,popen,Python,Call,Subprocess,Popen,警告:Python的新功能 希望听到实际使用它的专业人士的意见: subprocess.Popen()和subprocess.call()之间的主要区别是什么?什么时候最好使用它们? 除非你想读我为什么在想这个问题,或者你的答案围绕什么,你现在可以停止阅读了 我之所以想问这个问题,是因为我正在处理一个脚本中的一个问题,在这个脚本中,我开始使用subprocess.Popen(),最终称为系统暂停,然后想删除创建系统暂停的.exe,但我注意到使用Popen(),所有命令似乎都一起运行(对.exe的

警告:Python的新功能

希望听到实际使用它的专业人士的意见:

subprocess.Popen()和
subprocess.call()
之间的主要区别是什么?什么时候最好使用它们?

除非你想读我为什么在想这个问题,或者你的答案围绕什么,你现在可以停止阅读了

我之所以想问这个问题,是因为我正在处理一个脚本中的一个问题,在这个脚本中,我开始使用
subprocess.Popen()
,最终称为系统暂停,然后想删除创建系统暂停的.exe,但我注意到使用
Popen()
,所有命令似乎都一起运行(对.exe的删除在exe关闭之前执行…),尽管我尝试添加
communicate()

下面是我上面描述的伪代码:

subprocess.Popen(r'type pause.exe > c:\worker.exe', shell=True).communicate()
subprocess.Popen(r'c:\worker.exe', shell=True).communicate()
subprocess.Popen(r'del c:\worker.exe', shell=True).communicate()
子流程调用(*popenargs,**kwargs) 使用参数运行命令。等待 命令完成,然后返回 returncode属性

如果创建
Popen
对象,则必须自己调用
sp.wait()

如果您使用
调用
,那么就完成了

子流程调用(*popenargs,**kwargs) 使用参数运行命令。等待 命令完成,然后返回 returncode属性

如果创建
Popen
对象,则必须自己调用
sp.wait()

如果您使用
调用
,那么就完成了