Python中有哪些外部执行指令?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
<强> 1,os.system() 强>
阻塞
屏幕会打印命令的输出
返回命令结果码
=utf - 8 - * - # - * -编码 进口操作系统 if __name__==& # 39; __main__ # 39;: 通过 打印(& # 39;开始& # 39;) ret1=os.system (& # 39; python # 39;) 打印(& # 39;ret1: {} & # 39; .format (ret1)) ret2=os.system (& # 39; java - version # 39;) 打印(& # 39;ret2: {} & # 39; .format (ret2)) 打印(& # 39;结束& # 39;)
运行
可能有人理解阻塞是因为运行了Python,因此我尝试两个命令都用java - version
=utf - 8 - * - # - * -编码 进口操作系统 if __name__==& # 39; __main__ # 39;: 通过 打印(& # 39;开始& # 39;) ret1=os.system (& # 39; java - version # 39;) 打印(& # 39;ret1: {} & # 39; .format (ret1)) ret2=os.system (& # 39; java - version # 39;) 打印(& # 39;ret2: {} & # 39; .format (ret2)) 打印(& # 39;结束& # 39;)
运行
2, os.popen ()
阻塞或不阻塞
屏幕不会打印出命令的输出
返回文件对象,可用阅读,readline读取
不阻塞时:
=utf - 8 - * - # - * -编码 进口操作系统 if __name__==& # 39; __main__ # 39;: 通过 打印(& # 39;开始& # 39;) os.popen (& # 39; python # 39;) ret2=os.popen (& # 39; java - version # 39;) 打印(& # 39;结束& # 39;)
运行(程序很快打印开始和结束,就像只用了两个打印语句一样快)
阻塞时:
=utf - 8 - * - # - * -编码 进口操作系统 if __name__==& # 39; __main__ # 39;: 通过 打印(& # 39;开始& # 39;) ret1=os.popen (& # 39; python # 39;) print (ret1.read ()) ret2=os.popen (& # 39; java - version # 39;) print (ret2.read ()) 打印(& # 39;结束& # 39;)
运行
3, commands.getstatusoutput
python2。+中使用
需要到linux运行
阻塞或者非阻塞
屏幕不会打印出命令的输出
非阻塞时
=utf - 8 - * - # - * -编码 导入命令 if __name__==& # 39; __main__ # 39;: 通过 打印(& # 39;开始& # 39;) ret1=commands.getstatusoutput (& # 39; python # 39;) ret2=commands.getstatusoutput (& # 39; java - version # 39;) 打印(& # 39;结束& # 39;)
运行
阻塞时:
=utf - 8 - * - # - * -编码 导入命令 if __name__==& # 39; __main__ # 39;: 通过 打印(& # 39;开始& # 39;) ret1=commands.getstatusoutput (& # 39; python # 39;) 打印ret1 [0] 打印ret1 [1] 打印& # 39;==============& # 39; ret2=commands.getstatusoutput (& # 39; java - version # 39;) 打印ret2 [0] 打印ret2 [1] 打印& # 39;==============& # 39; 打印(& # 39;结束& # 39;)
运行
4,子流程中Popen
阻塞或非阻塞,同上面一样,通过是否读取IO决定是否阻塞
屏幕会打印出命令的输出
可通过stdout, stderr参数指定输出或错误打印到文件
=utf - 8 - * - # - * -编码 导入子流程 if __name__==& # 39; __main__ # 39;: 通过 打印(& # 39;开始& # 39;) s1=subprocess.Popen (& # 39; python # 39;) s1.wait () s2=subprocess.Popen (& # 39; java - version # 39;) s2.wait () 打印(& # 39;结束& # 39;)
运行
4.1,输出到文件
通过文件对象来输出到文件中