wangwengwu 发表于 2018-8-16 08:23:21

python调用外部命令

In : a=subprocess.check_call(['ls','-l'])  
总用量 2888
  
-rw-r--r-- 1 root root      12 12月6 19:50 13001195917
  
-rw-r--r-- 1 root root   453 12月6 19:31 1_md5.py
  
-rw-r--r-- 1 root root   453 12月2 16:48 1_walk.py
  
-rw-r--r-- 1 root root      14 12月6 16:42 2.txt
  
-rw-r--r-- 1 root root   412 12月7 20:25 ErrorExcept.py
  
-rw-r--r-- 1 root root   425 10月 24 05:57 hashlib2.py
  
drwxr-xr-x 2 root root    4096 10月 24 06:03 test
  
-rw-r--r-- 1 root root   556 12月6 16:06 top10.py
  
-rw-r--r-- 1 root root   430 10月 25 21:56 walk1.py
  
-rw-r--r-- 1 root root   128 10月 25 18:07 yield1.py
  
-rw-r--r-- 1 root root   680 10月 25 21:27 yield2.py
  
-rw-r--r-- 1 root root 2910024 12月6 16:48 非码+支付宝会员_喜欢牛肉_手机号码.txt
  

  
In : a
  
Out: 0
  

  
In : a=subprocess.check_call(['ls','a'])    #抛出异常
  
ls: 无法访问a: 没有那个文件或目录
  
---------------------------------------------------------------------------
  
CalledProcessError                        Traceback (most recent call last)
  
<ipython-input-62-575484aab70a> in <module>()
  
----> 1 a=subprocess.check_call(['ls','a'])
  

  
/usr/local/lib/python2.7/subprocess.pyc in check_call(*popenargs, **kwargs)
  
    538         if cmd is None:
  
    539             cmd = popenargs
  
--> 540         raise CalledProcessError(retcode, cmd)
  
    541   return 0
  
    542
  

  
CalledProcessError: Command '['ls', 'a']' returned non-zero exit status 2
  
In : a   #a的值还是0,并没有将异常的值保存到a中
  
Out: 0
  

  
# vim process_check_call.py
  
#!/usr/bin/env python
  
#ecoding=utf8
  

  
import subprocess
  

  

  
try:
  
    subprocess.check_call('exit 1', shell = True)
  
except Exception:
  
    print "exit 1返回echo $?不是0,抛出异常,打印出来"
  
# python process_check_call.py
  
exit 1返回echo $?不是0,抛出异常,打印出来
  

  

  

  
#!/usr/bin/env python
  
#ecoding=utf8
  

  
import subprocess
  

  

  
try:
  
    subprocess.check_call('exit 1', shell = True)
  
except subprocess.CalledProcessError:      #不知道异常名称,使用:except Exception:表示接受所有异常处理
  
    pass
  
print "exit 1返回echo $?不是0,抛出异常,打印出来,捕捉到异常"
  

  
# python process_check_call.py
  
exit 1返回echo $?不是0,抛出异常,打印出来,捕捉到异常
页: [1]
查看完整版本: python调用外部命令