最新要闻
- 西南证券给予平高电气持有评级 Q2业绩预告超预期 受益电网建设加速
- 跟比亚迪海豚拼了!大众ID.3低至12万冲量放价 美女销售:快买
- 拯救者系列最高颜值!联想预热拯救者Y9000X 2023 全球今热点
- 热头条丨冰箱为啥用磁性门?因为死过很多小孩
- 腾讯会议限制免费会议数:跨App加入会议改为付费功能|最新快讯
- 全球观察:王宝强哽咽 本人回应观众支持:都不容易 拿钱拿时间来支持我
- 手机耗电太快?这3个功能值得关注
- 天天视讯!老人发声感谢李玟生前帮助:一直记着李玟的恩情
- 骁龙8 Gen2香在哪儿?一张图让联发科/三星沉默了:最省电5G芯片|世界聚看点
- 谷歌Pixel Fold耐用性测试:屏幕容易损坏 防尘能力弱
- 库卡拉奇星人
- 很写实,比所谓的在古代整一夫一妻动漫强多了
- 全球高温纪录连续两天刷新历史!平均气温17.18℃
- iPhone 15系列将于8月量产:Pro Max或要涨价 成史上最贵
- 加速发展纯电车型 大众宣布:将在2030年前推出30款电动汽车 观察
- 快讯:王宝强《八角笼中》豆瓣7.6分:瑕不掩瑜 值得一看!
手机
光庭信息跌4.57% 2021上市超募11亿2022扣非降74% 时快讯
搜狐汽车全球快讯 | 大众汽车最新专利曝光:仪表支持拆卸 可用手机、平板替代-环球关注
- 光庭信息跌4.57% 2021上市超募11亿2022扣非降74% 时快讯
- 搜狐汽车全球快讯 | 大众汽车最新专利曝光:仪表支持拆卸 可用手机、平板替代-环球关注
- 视点!美国首位女总统即将诞生?拜登恐怕要提前下岗,美政坛迎来变局?
- 当前速递!用理想仪器实现更好的颗粒 德国新帕泰克亮相CPHI & PMEC China获好评
- 微粒贷怎么申请开通 开通方法如下
- 焦点简讯:心疼!这位40岁的云南缉毒警,已是满头白发
家电
Python中os.system()、subprocess.run()、call()、check_output()的用法_世界新消息
1.os.system()
os.system() 是对 C 语言中 system() 系统函数的封装,允许执行一条命令,并返回退出码(exit code),命令输出的内容会直接打印到屏幕上,无法直接获取。
示例:
# test.pyimport osos.system("ls -l | grep test") # 允许管道符# 测试执行$ ll <======== 列出当前目录中的内容drwxr-xr-x 2 foo foo 4096 Feb 13 09:09 __pycache__-rw-r--r-- 1 foo foo 359 Feb 19 09:21 test.py$ python test.py-rw-r--r-- 1 foo foo 359 Feb 19 09:21 test.py <======== 只有名字包含 test 的文件被列出
2.subprocess.run()
Python 3.5 开始推荐使用这个方法执行命令,其原型如下:
(资料图片仅供参考)
subprocess.run( args, *, stdin=None, input=None, stdout=None, stderr=None, capture_output=False, shell=False, cwd=None, timeout=None, check=False, encoding=None, errors=None, text=None, env=None, universal_newlines=None)
其中:
args: 可以是一个字符串(当 shell=True 时),也可以是一个列表(当 shell=False 时)
stdin, stdout, stderr: 用于指定标准IO文件句柄,可以是:
subprocess.PIPE: 用作 stdout, stderr 参数的值时,可以从返回值对象中的 stdout 和 stderr 属性中读取输出内容 subprocess.STDOUT: 用作 stderr 参数的值时,相当于把标准错误重定向到标准输入中) subprocess.DEVNULL: 用作 stdout, stderr 参数的值时,相当于把输出内容重定向到 /dev/null 用户已经打开的文件对象或描述符(整型数字)
capture_output: 当设置为 True 时,相当于 stdout 和 stderr 参数都设置为 True 了,可以通过返回值对象访问标准输出和标准错误内容
shell: 当设置为 True 时,args 参数会当做一条命令字符串(支持管道、重定向操作);当它为 False 时,args 需是一个列表(并且不支持管道、重定向操作)
cwd: 指定执行命令的目录,默认为当前目录
timeout: 指定命令执行超时时间(按妙计),若执行超时了,会 kill 掉命令并抛出 TimeoutExpired 异常
check: 当设置为 True 时,会自动检测执行退出码,若不为0,则抛出 CalledProcessError 异常
text: 当设置为 True 时,stdin、stdout、stderr 会以“文本”模式打开(返回值对象中的 stdout、stderr 存储文本内容),否则返回值对象中 stdout、stderr 存储的是字节序列
env: 用于设置程序执行时继承的环境变量等,默认与当前进程相同
该方法返回一个 CompletedProcess 对象,其中包含以下属性:
- returncode: 执行命令的退出码
- stdout: 捕获的标准输出内容(当 stdout 参数为 PIPE 时)。其格式默认为字节序列,除非 text 参数为 True (此时为文本格式)。
- stderr: 捕获的标准错误内容(当 stderr 参数为 PIPE 时)。其格式默认为字节序列,除非 text 参数为 True (此时为文本格式)。
- args: 同参数 args 。
示例:
import subprocesssubprocess.run(["ls", "-l"]) # 默认时,args 参数需是一个列表subprocess.run("ls -l", shell=True) # 当 shell 为 True 时,args 是一个字符串ret = subprocess.run("ls -l", shell=True, capture_output=True, text=True) # 以文本模式捕获输出内容print("Return code:", ret.returncode) # Return code: 0print("STDOUT:", ret.stdout) # STDOUT: ...当前目录内容...print("STDERR:", ret.stderr) # STDERR: <空>ret = subprocess.run("abcdefg", shell=True, text=True, # 注意:这里必须 shell=True 才能捕获到 /bin/sh 的输出错误 # 当 shell=False 时,是要去捕获 "abcdefg" 命令自身输出的内容,但是它不存在,python 会报错 stdout=subprocess.PIPE, stderr=subprocess.STDOUT # 标准错误重定向到标准输出) print("STDOUT:", ret.stdout) # STDOUT: /bin/sh: abcdefg: command not found
另一个用于测试 shell 参数区别的示例如下:
import sys, re, subprocessif len(sys.argv) == 1: # parent process cmd = ["python", sys.argv[0], "--run-child"] ret = subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True) print(ret) # CompletedProcess(args=["python", "test.py", "--run-child"], returncode=0, stdout="stdout output\n", stderr="stderr output") assert re.match("stdout output", ret.stdout) assert re.match("stderr output", ret.stderr) # 如果 cmd 中的命令不存在,这里是捕获不到的,subprocess.run()自己就会报错 ret = subprocess.run(" ".join(cmd), shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True) print(ret) # CompletedProcess(args="python test.py --run-child", returncode=0, stdout="stdout output\n", stderr="stderr output") assert re.match("stdout output", ret.stdout) assert re.match("stderr output", ret.stderr) # 如果 cmd 中的命令不存在,这里也是可以捕获到的,内容可能是 xxx command not found print("Passed!")else: # child process print("stdout output") sys.stderr.write("stderr output")
3.subprocess.call()
Python 3.5 以前(包括 2.x 版本)没有 subprocess.run() 方法,可以使用 subprocess.call() 来执行命令,该方法原型如下:
subprocess.call(args, *, stdin=None, stdout=None, stderr=None, shell=False, cwd=None, timeout=None)
注意:这个方法的返回值是命令的退出码,而不是一个对象,所以无法像 subprocess.run() 一样捕获命令输出内容(不要设置 stdout=PIPE 或 stderr=PIPE,否则可能造成命令卡死)。
该方法的其它参数与 subprocess.run() 类似。
4.subprocess.check_output()
Python 3.5 以前的版本,要想捕获命令输出内容,可以使用 subprocess.check_output() 方法,它的原型如下:
subprocess.check_output(args, *, stdin=None, stderr=None, shell=False, cwd=None, encoding=None, errors=None, universal_newlines=None, timeout=None, text=None)
注意:参数中没有 stdout ,因为这个函数的返回值默认就是标准输出内容,也可以将设置 stderr=subprocess.STDOUT 将标准错误重定向到标准输出,但是好像没有办法单独捕获标准错误内容呢!
示例:
import sys, re, subprocess#Python小白学习交流群:711312441if len(sys.argv) == 1: # parent process cmd = ["python", sys.argv[0], "--run-child"] ret = subprocess.check_output(cmd, stderr=subprocess.STDOUT) print("[" + ret + "]") # 输出内容中包含标准输出和标准错误,输出顺序在 windows 下和 linux 下可能会有差异 assert re.search("stdout output", ret) assert re.search("stderr output", ret) print("Passed!")else: # child process print("stdout output") sys.stderr.write("stderr output")
关键词:
-
Python中os.system()、subprocess.run()、call()、check_output()的用法_世界新消息
1 os system()os system()是对C语言中system()系统函数的封装,允许
来源: Python中os.system()、subprocess.run()、call()、check_output()的用法_世界新消息
西南证券给予平高电气持有评级 Q2业绩预告超预期 受益电网建设加速
跟比亚迪海豚拼了!大众ID.3低至12万冲量放价 美女销售:快买
拯救者系列最高颜值!联想预热拯救者Y9000X 2023 全球今热点
热头条丨冰箱为啥用磁性门?因为死过很多小孩
腾讯会议限制免费会议数:跨App加入会议改为付费功能|最新快讯
Logistic Regression and its Maximum Likelihood Estimation
全球观察:王宝强哽咽 本人回应观众支持:都不容易 拿钱拿时间来支持我
手机耗电太快?这3个功能值得关注
天天视讯!老人发声感谢李玟生前帮助:一直记着李玟的恩情
骁龙8 Gen2香在哪儿?一张图让联发科/三星沉默了:最省电5G芯片|世界聚看点
谷歌Pixel Fold耐用性测试:屏幕容易损坏 防尘能力弱
库卡拉奇星人
很写实,比所谓的在古代整一夫一妻动漫强多了
全球高温纪录连续两天刷新历史!平均气温17.18℃
iPhone 15系列将于8月量产:Pro Max或要涨价 成史上最贵
加速发展纯电车型 大众宣布:将在2030年前推出30款电动汽车 观察
快讯:王宝强《八角笼中》豆瓣7.6分:瑕不掩瑜 值得一看!
iOS上架报错:无法添加以供审核
斗鱼鱼丸有什么用(斗鱼鱼丸多少钱)
阿尔法·罗密欧全新超跑预告,就是不玩电动车,好样的
丫丫收到解暑神器!冰块凉席安排上了_全球实时
被骗好多年?半数以上的三星电视都没用自家屏幕 热资讯
比坦克300还大!奇瑞捷途旅行者预计将于8月开启预售 将提供插混版本|当前速看
网约车司机20天碰瓷8次公交车:比拉客挣得多 撞车从来不修
环球讯息:男子中暑后突发狂躁神智不清:脑子已被高温烧坏了
有哪些相见恨晚的办公(word/Excel)神器?
全球热消息:MegEngine 使用小技巧:如何使用 MegCC 进行模型编译
女士小巧汽车3万左右手动挡(女士小巧汽车3万左右)
债市日报:7月6日
2023乌海市教育局官网中考专栏成绩查询入口
替代OLED!曝苹果研发MicroLED屏:2026年商用 环球速讯
集插排、氮化镓快充于一体!魅族PANDAER 120W GaN桌面充电站图赏
PANDAER 120W桌面超级充电站PRO评测:高颜值+多协议充电 跟凌乱桌面说拜拜
0蔗糖、0胆固醇椰香浓郁!轻上椰子汁4瓶4升:到手39.9元
王宝强新电影成了!拍《八角笼中》绝不将就、绝不凑合
全球快资讯:【技术积累】Mysql中的SQL语言【技术篇】【二】
第十八期 | 知名手游开启公测,大批游戏账号遭抢注倒卖 天天最新
13.字符串
VSCode如何通过Ctrl+P快速打开node_modules中的文件
js的中的函数(二) 全球焦点
詹姆斯二儿子全美排名 詹姆斯现身执教二儿子 基本情况讲解
转股价下修难破局 12家银行可转债转股率不足1%
【新华500】新华500指数(989001)6日跌0.67% 环球热消息
NASA帕克探测器第16次贴着太阳飞过:100万度高温下为啥不会融化?|当前关注
时讯:全新火车票来了:299元 一张票打卡三个城市
挑战马斯克“农民”弟弟!上海交大工科博导带队种菜:三个月出奇迹_观速讯
焦点速读:五星耐摔认证!荣耀X50图赏:十面抗摔的硬核曲屏
全员共赢20万!2023魅族王者荣耀冠军杯招募开启
温网第4日:中国金花4人出战,王欣瑜冲击32强!3位金花亮相女双
王一博的机场穿搭如同秀场,飞往上海参加戏剧节,有点期待
快播:植信投资首席经济学家连平:下半年宏观政策将加力提效 三季度稳增长政策或集中出台
当前焦点!越来越热不是错觉 2024年或成为最热一年
马斯克:未来地球上的机器人数量将超过人类 物质不再短缺
免费MMO也能不卖数值:《逆水寒》手游登顶AppStore畅销榜-天天快资讯
全球今日讯!如果重来你还愿意选我当你的导师吗?“杀马特”少年的成长
焦点精选!博主在呼伦贝尔拍下绝美照片:几乎和WinXP蓝天白云壁纸一模一样
香港立法会三读通过区议会修例草案|焦点关注
常用的生物医学科研工具合集 世界实时
哈工大回应网传抢教授话筒男生被录取:还没开始投档呢
RTX 4090无限逼近4GHz:逆天功耗1127W!_环球今热点
世界看热讯:“长江禁捕 打非断链”专项行动 湖北5集体、9人上榜
7月6日 13:18分 京基智农(000048)股价快速拉升-世界即时
环球观焦点:滨州市直机关工委到滨州中院调研机关党建工作
这届年轻人盯上了电动轮椅 通勤不带头盔不上牌不违规:专家痛批占用公共资源
40%果肉 层层爆浆!榴莲西施千层蛋糕400gx2盒+戚风蛋糕x1盒69元大促_天天热资讯
三亚海鲜店缺斤短两被网友曝光 官方通报:商户清退出场罚款30万元
全球新资讯:同级唯一!宝骏云朵全球首创“云朵沙发”座椅:直接把大沙发搬进车里
李玟遗嘱财产全部留给母亲 网友:妈妈想要的是女儿 天天滚动
中国三人女篮积分升至世界第1 至11月排名前3球队将直通巴黎奥运_环球关注
天天热头条丨直播软件开发知识:实现感知网络质量功能
女学生拒客服工作被HR攻击 别上班了去死:公司回应 网友吐槽太过分
华为轮值董事长胡厚崑:华为盘古大模型3.0将在7月7日发布-热点聚焦
弹力修身透气:361度男运动裤夏季薄款梭织长裤69元 世界热资讯
中石化出品:鸥露竹浆抑菌抽纸28包/29.9元抄底 天天热资讯
每日热闻!实现AI全球天气精准预报!华为成果登上顶级科研杂志《Nature》
环球滚动:资金流向(7月5日)丨华工科技、新易盛、北方稀土获融资资金买入排名前三
荣耀MagicBook X 16 2023笔记本发布 首发价3699元起
16-7系统启动和内核管理
全球速递!超达装备7月6日快速上涨
清明节吃什么传统食物英语(清明节吃什么传统食物)
环球快资讯:@毕业生,从求职到入职,这份避坑指南请收好→
世界上最小的相机问世!宽4cm 重17g 只要350元_当前聚焦
【天天快播报】曝iPhone 15全系将配备更大的电池:续航大大改善
电动车的底 让自己弄掉了 热讯
15万元珠宝被家人当垃圾丢了 网友:我想当门口那个垃圾桶-报道
每日速讯:马斯克称中国会有很强的AI能力:中国下定决心做一件事就一定能做好
中方呼吁国际社会采取行动让每一个儿童都远离战火硝烟 当前速看
当前时讯:为什么要使用消息队列
三大亮点提前打卡世界人工智能大会
5年超长保质期:碳性电池40节19.9元大促
手机被大妈捡走男子狂追100多公里:从平顶山追到白云山
全球球精选!真矿泉 含锶矿物离子!峨眉山N30古岩矿泉水大促 1.24元/瓶
天天观焦点:15万以内大五座纯电 宝骏云朵内饰官图发布:值得友商一学
环球即时看!被污名化要还其清白 教授呼吁别把玩游戏当不务正业:人性需要释放
女生毕业删除90%同学被骂有病 都是塑料感情:无效社交越来越多
世界新资讯:实拍日本拉链式交替通行 还会双闪感谢后车 网友感叹素质真高
【世界播资讯】没人买!RTX4060发布近一周就跌破首发价 商家还在狂降价
视焦点讯!小米电视蝉联榜首:上半年出货量逼近400万台 今年第一或不保
研究报告:美国近一半自来水中含有“永久化学物质”