zoukankan      html  css  js  c++  java
  • subprocess

    [root@wesley ~]# python
    Python 2.7.14 (default, Sep 10 2018, 23:42:00)
    [GCC 4.4.7 20120313 (Red Hat 4.4.7-23)] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>>
    >>>
    >>> import subprocess
    >>> ret = subprocess.call('ls -l',shell=True)       #直接运行命令并打印 shell=True 表示程序将通过shell来执行
    total 20
    -rw-------. 1 root root  963 Jul  8 07:07 anaconda-ks.cfg
    -rw-r--r--. 1 root root 8845 Jul  8 07:07 install.log
    -rw-r--r--. 1 root root 3384 Jul  8 07:06 install.log.syslog
    >>> ret=subprocess.call('ls -l',shell=False)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "/usr/local/lib/python2.7/subprocess.py", line 168, in call
        return Popen(*popenargs, **kwargs).wait()
      File "/usr/local/lib/python2.7/subprocess.py", line 390, in __init__
        errread, errwrite)
      File "/usr/local/lib/python2.7/subprocess.py", line 1025, in _execute_child
        raise child_exception
    OSError: [Errno 2] No such file or directory
    >>> subprocess.check_call('ls -l',shell=True)      #检查call 的执行命令,如果执行状态码是 0 ,则返回0,否则抛异常
    total 20
    -rw-------. 1 root root  963 Jul  8 07:07 anaconda-ks.cfg
    -rw-r--r--. 1 root root 8845 Jul  8 07:07 install.log
    -rw-r--r--. 1 root root 3384 Jul  8 07:06 install.log.syslog
    0
    >>> subprocess.check_call('exit 1',shell=True)          
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "/usr/local/lib/python2.7/subprocess.py", line 186, in check_call
        raise CalledProcessError(retcode, cmd)
    subprocess.CalledProcessError: Command 'exit 1' returned non-zero exit status 1
    >>> subprocess.check_output('echo','hello')    
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "/usr/local/lib/python2.7/subprocess.py", line 212, in check_output
        process = Popen(stdout=PIPE, *popenargs, **kwargs)
      File "/usr/local/lib/python2.7/subprocess.py", line 339, in __init__
        raise TypeError("bufsize must be an integer")
    TypeError: bufsize must be an integer
    >>> subprocess.check_output(['echo','hello'])     #args 是一个字符串或者元祖,列表(统一在某一个里面)
    'hello
    '
    >>> subprocess.check_output('echo hello',shell=True)
    'hello
    '
    >>> ret1=subprocess.Popen('mkdir t2',shell=True)
    >>> subprocee.Popen('ls -l',shell=True)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    NameError: name 'subprocee' is not defined
    >>> subprocess.Popen('ls -l',shell=True)          #Popen执行命令
    <subprocess.Popen object at 0x7f5e8b43f850>
    >>> total 24
    -rw-------. 1 root root  963 Jul  8 07:07 anaconda-ks.cfg
    -rw-r--r--. 1 root root 8845 Jul  8 07:07 install.log
    -rw-r--r--. 1 root root 3384 Jul  8 07:06 install.log.syslog
    drwxr-xr-x. 2 root root 4096 Oct 16 03:15 t2
    
    >>> subprocess.Popen('ifconfig',shell=True)
    <subprocess.Popen object at 0x7f5e84f3dbd0>
    >>> eth0      Link encap:Ethernet  HWaddr 00:0C:29:04:FE:91
              inet addr:192.168.159.128  Bcast:192.168.159.255  Mask:255.255.255.0
              inet6 addr: fe80::20c:29ff:fe04:fe91/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:1477 errors:0 dropped:0 overruns:0 frame:0
              TX packets:715 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000
              RX bytes:129113 (126.0 KiB)  TX bytes:87399 (85.3 KiB)
    
    lo        Link encap:Local Loopback
              inet addr:127.0.0.1  Mask:255.0.0.0
              inet6 addr: ::1/128 Scope:Host
              UP LOOPBACK RUNNING  MTU:65536  Metric:1
              RX packets:0 errors:0 dropped:0 overruns:0 frame:0
              TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:0
              RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
    
    
    >>> obj=subprocess.Popen('python',stdin=subprocess.PIPE,      
    #在python 环境里面执行命令,
    注意:如果希望通过进程的stdin向其发送数据,在创建Popen对象的时候,
    参数stdin必须被设置为PIPE。同样,
    如果希望从stdout和stderr获取数据,必须将stdout和stderr设置为PIPE。 ... stdout
    =subprocess.PIPE,stderr=subprocess.PIPE, ... universal_newlines=True) >>> obj.stdin.write('print(1) ') >>> obj.stdin.write('print(2)') #写入数据 >>> obj.stdin.close() >>> cmd_out=obj.stdout.read() #取数据 >>> obj.stdout.close() >>> cmd_error=obj.stderr.read() >>> obj.stderr.close() >>> print(cmd_out) 1 2 >>> print(cmd_error) >>> obj=subprocess.Popen('python',stdin=subprocess.PIPE, ... stdout=subprocess.PIPE,stderr=subprocess.PIPE, ... universal_newlines=True) ... File "<stdin>", line 2 ... stdout=subprocess.PIPE,stderr=subprocess.PIPE, ^ SyntaxError: invalid syntax >>> File "<stdin>", line 1 ... universal_newlines=True) ^ SyntaxError: invalid syntax >>> import subprocess obj = subprocess.Popen(["python"], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True) obj.stdin.write("print(1) ") obj.stdin.write("print(2)") out_error_list = obj.communicate() #取数据 print(out_error_list)>>> >>> >>> >>> >>> >>> >>> ('1 2 ', '') >>> import subprocess obj = subprocess.Popen(["python"], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True) out_error_list = obj.communicate('print("hello")') #写入并取数据 obj.communicate(input) print(out_error_list)>>> >>> >>> >>> ('hello ', '') >>>
  • 相关阅读:
    QStringLiteral(源代码里有一个通过构造函数产生的从const char*到QString的隐式转换,QStringLiteral字符串可以放在代码的任何地方,编译期直接生成utf16字符串,速度很快,体积变大)
    utf8格式源代码中的字符串,默认都会当作char来处理,除非用L""符号来修饰
    Qt Installer Framework的学习
    发布Qt Quick桌面应用程序的方法
    先对数组排序,在进行折半查找(C++)
    7个高效习惯
    人活着是靠精神(几个例子都是我自己发现的)
    VC++对象布局的奥秘:虚函数、多继承、虚拟继承
    delphi数字签名验证及能够获取数字签名文件信息(利用wintrust.dll的导出函数,翻译一下)
    算法系列之二十:计算中国农历(二)
  • 原文地址:https://www.cnblogs.com/wuxi9864/p/9912937.html
Copyright © 2011-2022 走看看