电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Python常用外部指令執行代碼實例

瀏覽:25日期:2022-07-06 11:51:55

1、os.system()

阻塞

屏幕會打印命令的輸出

返回命令結果碼

# -*- encoding=utf-8 -*-import osif __name__ == ’__main__’: pass print(’開始’) ret1 = os.system(’python’) print(’ret1:{}’.format(ret1)) ret2 = os.system(’java -version’) print(’ret2:{}’.format(ret2)) print(’結束’)

運行

Python常用外部指令執行代碼實例

可能有人理解阻塞是因為運行了python,因此我嘗試兩個命令都用java -version

# -*- encoding=utf-8 -*-import osif __name__ == ’__main__’: pass print(’開始’) ret1 = os.system(’java -version’) print(’ret1:{}’.format(ret1)) ret2 = os.system(’java -version’) print(’ret2:{}’.format(ret2)) print(’結束’)

運行

Python常用外部指令執行代碼實例

2、os.popen()

阻塞或不阻塞

屏幕不會打印出命令的輸出

返回文件對象,可用read,readline讀取

不阻塞時:

# -*- encoding=utf-8 -*-import osif __name__ == ’__main__’: pass print(’開始’) os.popen(’python’) ret2 = os.popen(’java -version’) print(’結束’)

運行(程序很快打印開始和結束,就像只用了兩個print語句一樣快)

Python常用外部指令執行代碼實例

阻塞時:

# -*- encoding=utf-8 -*-import osif __name__ == ’__main__’: pass print(’開始’) ret1 = os.popen(’python’) print(ret1.read()) ret2 = os.popen(’java -version’) print(ret2.read()) print(’結束’)

運行

Python常用外部指令執行代碼實例

3、commands.getstatusoutput

python2.+中使用

需要到linux運行

阻塞或者非阻塞

屏幕不會打印出命令的輸出

非阻塞時

# -*- encoding=utf-8 -*-import commandsif __name__ == ’__main__’: pass print(’開始’) ret1 = commands.getstatusoutput(’python’) ret2 = commands.getstatusoutput(’java -version’) print(’結束’)

運行

Python常用外部指令執行代碼實例

阻塞時:

# -*- encoding=utf-8 -*-import commandsif __name__ == ’__main__’: pass print(’開始’) ret1 = commands.getstatusoutput(’python’) print ret1[0] print ret1[1] print ’==============’ ret2 = commands.getstatusoutput(’java -version’) print ret2[0] print ret2[1] print ’==============’ print(’結束’)

運行

Python常用外部指令執行代碼實例

4、subprocess中Popen

阻塞或非阻塞,同上面一樣,通過是否讀取IO決定是否阻塞

屏幕會打印出命令的輸出

可通過stdout,stderr參數指定輸出或錯誤打印到文件

# -*- encoding=utf-8 -*-import subprocessif __name__ == ’__main__’: pass print(’開始’) s1 = subprocess.Popen(’python’) s1.wait() s2 = subprocess.Popen(’java -version’) s2.wait() print(’結束’)

運行

Python常用外部指令執行代碼實例

4.1、 輸出到文件

通過文件對象來輸出到文件中

# -*- encoding=utf-8 -*-import subprocessif __name__ == ’__main__’: pass print(’開始’) with open(’s1.txt’, ’w’) as f: s1 = subprocess.Popen(’python’, stdout=f, ) # 指定輸出重定向到文件 s1.wait(10) # 超過10秒還沒執行完會拋出異常 with open(’s2.txt’, ’w’) as f: s2 = subprocess.Popen(’java -version’, stdout=f, stderr=f) # 指定輸出和錯誤都重定向到文件 s2.wait() print(’結束’)

運行后可看到文件已經寫入,屏幕不打印。需要注意是stdout還是stderr。

4.2、捕獲輸出和錯誤

PIPE通過開一個新的管道來接收運行狀態

# -*- encoding=utf-8 -*-import subprocessif __name__ == ’__main__’: pass print(’開始’) s1 = subprocess.Popen(’java -version’, stdout=subprocess.PIPE, stderr=subprocess.PIPE) s1.wait(10) # 超過10秒還沒執行完會拋出異常 print(s1.returncode) # 結果碼 print(s1.poll()) # 已經執行結束返回結果碼,否則返回None std1 = s1.stdout.read() print(’std_out:{}’.format(std1)) std2 = s1.stderr.read() print(’std_err:{}’.format(std2)) print(’結束’)

運行

Python常用外部指令執行代碼實例

5、subprocess.call

用來替代os.system

阻塞

# -*- encoding=utf-8 -*-import subprocessif __name__ == ’__main__’: pass print(’開始’) s1 = subprocess.call(’java -version’, ) print(s1) s2 = subprocess.call(’python’, ) print(s2) s3 = subprocess.call(’python’, timeout=3) # 超時拋出異常 print(s3) print(’結束’)

6、check_call()和check_output()

都會檢查結果碼,不是0就拋出異常

check_call()返回狀態碼

check_output()返回輸出

# -*- encoding=utf-8 -*-import subprocessif __name__ == ’__main__’: pass print(’開始’) s1 = subprocess.check_call(’java -version’, ) print(s1) s2 = subprocess.check_output(’java -version’, ) print(s2) print(’結束’)

運行

Python常用外部指令執行代碼實例

使用上面提到的三個方法:call()、check_call() 和 check_output() 時,盡量不要將參數stderr和stdout設置為 subprocess.PIPE,這幾個函數默認都會等待子進程完成,子進程產生大量的輸出數據如果造成管道堵塞,父進程再等待子進程完成可能造成死鎖。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 淘气堡_室内儿童乐园_户外无动力儿童游乐设备-高乐迪(北京) | 福建自考_福建自学考试网 | 电动车头盔厂家_赠品头盔_安全帽批发_山东摩托车头盔—临沂承福头盔 | 铝板冲孔网,不锈钢冲孔网,圆孔冲孔网板,鳄鱼嘴-鱼眼防滑板,盾构走道板-江拓数控冲孔网厂-河北江拓丝网有限公司 | 鑫铭东办公家具一站式定制采购-深圳办公家具厂家直销 | ASA膜,ASA共挤料,篷布色母料-青岛未来化学有限公司 | 成都亚克力制品,PVC板,双色板雕刻加工,亚克力门牌,亚克力标牌,水晶字雕刻制作-零贰捌广告 | 不锈钢复合板厂家_钛钢复合板批发_铜铝复合板供应-威海泓方金属复合材料股份有限公司 | SOUNDWELL 编码器|电位器|旋转编码器|可调电位器|编码开关厂家-广东升威电子制品有限公司 | PC构件-PC预制构件-构件设计-建筑预制构件-PC构件厂-锦萧新材料科技(浙江)股份有限公司 | 济南网站建设_济南网站制作_济南网站设计_济南网站建设公司_富库网络旗下模易宝_模板建站 | 太原装修公司_山西整装家装设计_太原室内装潢软装_肖邦家居 | 体感VRAR全息沉浸式3D投影多媒体展厅展会游戏互动-万展互动 | LZ-373测厚仪-华瑞VOC气体检测仪-个人有毒气体检测仪-厂家-深圳市深博瑞仪器仪表有限公司 | 赛默飞Thermo veritiproPCR仪|ProFlex3 x 32PCR系统|Countess3细胞计数仪|371|3111二氧化碳培养箱|Mirco17R|Mirco21R离心机|仟诺生物 | 天然气分析仪-液化气二甲醚分析仪|传昊仪器 | 绿萝净除甲醛|深圳除甲醛公司|测甲醛怎么收费|培训机构|电影院|办公室|车内|室内除甲醛案例|原理|方法|价格立马咨询 | 上海恒驭仪器有限公司-实验室平板硫化机-小型平板硫化机-全自动平板硫化机 | 上海皓越真空设备有限公司官网-真空炉-真空热压烧结炉-sps放电等离子烧结炉 | 组织研磨机-高通量组织研磨仪-实验室多样品组织研磨机-东方天净 传递窗_超净|洁净工作台_高效过滤器-传递窗厂家广州梓净公司 | 捷码低代码平台 - 3D数字孪生_大数据可视化开发平台「免费体验」 | 氧氮氢联合测定仪-联测仪-氧氮氢元素分析仪-江苏品彦光电 | 背压阀|减压器|不锈钢减压器|减压阀|卫生级背压阀|单向阀|背压阀厂家-上海沃原自控阀门有限公司 本安接线盒-本安电路用接线盒-本安分线盒-矿用电话接线盒-JHH生产厂家-宁波龙亿电子科技有限公司 | 汽车整车综合环境舱_军标砂尘_盐雾试验室试验箱-无锡苏南试验设备有限公司 | 北京开源多邦科技发展有限公司官网| 扬州汇丰仪表有限公司 | 铝镁锰板_铝镁锰合金板_铝镁锰板厂家_铝镁锰金属屋面板_安徽建科 | 精密光学实验平台-红外粉末压片机模具-天津博君 | 屏蔽泵厂家,化工屏蔽泵_维修-淄博泵业| 北京网站建设公司_北京网站制作公司_北京网站设计公司-北京爱品特网站建站公司 | 地脚螺栓_材质_标准-永年县德联地脚螺栓厂家 | 插针变压器-家用电器变压器-工业空调变压器-CD型电抗器-余姚市中驰电器有限公司 | 健康管理师报名入口,2025年健康管理师考试时间信息网-网站首页 塑料造粒机「厂家直销」-莱州鑫瑞迪机械有限公司 | 刑事律师_深圳著名刑事辩护律师_王平聚【清华博士|刑法教授】 | 道康宁消泡剂-瓦克-大川进口消泡剂供应商 | 实验室pH计|电导率仪|溶解氧测定仪|离子浓度计|多参数水质分析仪|pH电极-上海般特仪器有限公司 | 国产频谱分析仪-国产网络分析仪-上海坚融实业有限公司 | 垃圾压缩设备_垃圾处理设备_智能移动式垃圾压缩设备--山东明莱环保设备有限公司 | 色油机-色母机-失重|称重式混料机-称重机-米重机-拌料机-[东莞同锐机械]精密计量科技制造商 | 淘剧影院_海量最新电视剧,免费高清电影随心观看 | 警用|治安|保安|不锈钢岗亭-售货亭价格-垃圾分类亭-移动厕所厂家-苏州灿宇建材 |