Python中os.system和os.popen区别
Python调用Shell,有两种方法:os.system(cmd)或os.popen(cmd)脚本执行过程中的输出内容。实际使用时视需求情况而选择。
两者的区别是:
- os.system(cmd)的返回值是脚本的退出状态码,只会有0(成功),1,2
- os.popen(cmd)返回脚本执行的输出内容作为返回值
比如计算一个文件的md5值:
os.system(cmd):
该方法在调用完shell脚本后,返回一个信号代码。
1 2 3 | >>> os.system( 'md5sum /root/all.sql' ) 7735d611ebce91ebb4c7acc4747a8b67 / root / all .sql 0 #返回的信号代码 0(成功) |
os.popen(cmd):
这种调用方式是通过管道的方式来实现,函数返回一个file-like的对象,里面的内容是脚本输出的内容(可简单理解为echo输出的内容)。使用os.popen调用脚本的情况:
如:
1 2 3 4 5 | >>> md5_value = os.popen( 'md5sum /root/all.sql' ) #将结果赋值给变量 >>> print ( type (md5_value)) #查看类型 < class 'os._wrap_close' > >>> print (md5_value.read().split()[ 0 ]) #取值 7735d611ebce91ebb4c7acc4747a8b67 |
明显地,像调用”ls”这样的shell命令,应该使用popen的方法来获得内容
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】