python中os.system和os.popen的自我理解

在python中常用一些os下的函数进行简单的命令操作,从自身工作角度在使用这两个函数的时候对这两个函数的作用进行一些区别,为了今后查找方便,仅在这里记录一下。

os.system()用于执行命令,这个命令如果不需要看到任何执行结果,则可以放心去用了,比如:

command = "mkdir 222"

os.system(command)

或者

os.system("mkdir 222")

这种无关输出结果的操作用system比较合适,但如果需要看到结果的操作,就得用os.popen()了。

popen会把执行结果以字符串的形式记录到内存中,想要看到结果需要用.read()方法来读取,因此最好用一个变量来存储其输出内容。

a=os.popen("ls").read()

a

'bin\nconda-meta\ndoc\nenvs\netc\ninclude\nlib\nlibexec\nLICENSE.txt\nmkspecs\nphrasebooks\npkgs\nplugins\nqml\nsbin\nshare\nssl\ntranslations\nvar\n'

后面如果需要解析结果,成为正常的文件名或目录名,可以用正则把“\n”都识别出来处理。

但其实system()也有输出结果,只不过system()的输出结果是系统执行命令的返回值,可以读取system()的返回值来进行一些判断,比如:

test_f = os.system("hadoop fs -test -e /aaaaa/bbbbb/")

判断hadoop上某个文件夹是否存在,这时候test_f获得的就是这条语句执行的返回值,如果是直接用hadoop fs -test -e /aaaaa/bbbbb/就需要在后面执行echo $?来强制输出结果,但种方式在python里需要用popen来读取,比较烦,但如果知道system()的返回值直接用返回值来处理就比较简单了,因为system()的执行结果返回值中,0代表成功,非0代表执行有错误,如此即可直接对test_f进行判断了。

当然以上仅是本人工作中所使用的情况,其他情况还需要根据实际进行讨论,不可以一概全。

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值