Python | 调用系统命令

本文对比了Python中os模块的system()与popen()函数在调用系统命令时的不同应用场景及优缺点。system()适用于需要获取执行状态的场景,而popen()则更适合需要处理命令输出的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在Python里面,我们最经常使用调用系统命令的函数,是os模块的system()和popen()。

 

但是两个有一些区别,要在根据情况去选择。

 

system():

    返回值:0(成功),1,2

    为同步调用,直到命令执行结束才会返回是否成功标志,并不能反馈信息。

 

    优点:

        有执行状态返回值,可以判断到是否执行成功。

 

 

    缺点:

        不适合用于想使用调用系统命令的返回值的情况。

 

popen():

    相当于Linux下的echo,使用于想调用系统命令的情况。函数返回是 file read 的对象,对其进行读取read、readlines等操作可以看到执行的输出。

但是调用失败是不会有结果返回的。

 

   优点:

        很适合想利用返回值的情况。

    缺点:

        不能知道是否执行成功,有一点不可控。

 

例子:

# 想使用date返回值,用system就不太适合,因为取值取不到想要的日期,而是
# 取到0
>>> os.system("date +'%Y-%m-%d'")
2019-07-17
0
# 这时应该去使用 popen、
>>> os.popen("date +'%Y-%m-%d'")
<os._wrap_close object at 0x7f8eab79a5c0>
​
# 我们需要加上read()去读取结果
>>> os.popen("date +'%Y-%m-%d'").read().split()[0]
'2019-07-17'




 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值