Python 执行cmd命令的3种方法简单示例,并获取返回信息、执行命令结果(成功 or 失败)

Python 执行cmd

  • 方法选择
  • 1、os.system
  • 1.1 示例 os.system("ipconfig")
  • 1.2 os.system(cmd) 返回值
  • 2、os.popen
  • 2.1 示例 os.popen('ipconfig','r')
  • 3、subprocess
  • 3.1 示例 subprocess.Popen
  • 方法选择

    方法 解释
    os.system(cmd) os.system()无法获取控制台输出的内容,只是简单的执行cmd指令,返回命令退出状态,其中结果为0表示执行成功
    os.popen(cmd).read() os.popen()可以获取控制台输出的内容,返回的是一个file对象
    commands.getouput(cmd) python3.X 模块中废弃commands该模块,使用subprocess模块在本文下面增加解说
    subprocess.Popen(cmd) 功能更高级,强大subprocess.Popen(cmd,shell=True,stdout=subpro)
    subprocess.run() Python 3.5中新增, 执行指定的命令,等待命令执行完成后返回一个包含执行结果的CompletedProcess类的实例。
    subprocess.call() 执行指定的命令,返回命令执行状态,其功能类似于os.system(cmd)
    subprocess.check_call() Python 2.5中新增的函数。 执行指定的命令,如果执行成功则返回状态码,否则抛出异常。其功能等价于subprocess.run(…, check=True)
    subprocess.check_output() Python 2.7中新增的的函数。执行指定的命令,如果执行状态码为0则返回命令执行结果,否则抛出异常
    subprocess.getoutput(cmd) 接收字符串格式的命令,执行命令并返回执行结果,其功能类似于os.popen(cmd).read()和commands.getoutput(cmd)
    subprocess.getstatusoutput(cmd) 执行cmd命令,返回一个元组(命令执行状态, 命令执行结果输出),其功能类似于commands.getstatusoutput()
    推荐: subprocess 允许启动一个新进程,并连接到它们的输入/输出/错误管道,从而获取返回值 菜鸟教程|Python3 subprocess

    1、os.system

    os.system(cmd), python中使用linux、cmd命令

    1.1 示例 os.system(“ipconfig”)

    import os
    retValue = os.system("ipconfig")
    print(retValue)
    

    1.2 os.system(cmd) 返回值

    版权声明:本文为CSDN博主「Jenrey」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/JENREY/article/details/109845487

    如果执行成功,那么会返回0,表示命令执行成功
    “OS error code 1: Operation not permitted”
    “OS error code 2: No such file or directory”
    “OS error code 3: No such process”
    “OS error code 4: Interrupted system call”
    “OS error code 5: Input/output error”
    “OS error code 6: No such device or address”
    “OS error code 7: Argument list too long”
    “OS error code 8: Exec format error”
    “OS error code 9: Bad file descriptor”
    “OS error code 10: No child processes”
    “OS error code 11: Resource temporarily unavailable”
    “OS error code 12: Cannot allocate memory”
    “OS error code 13: Permission denied”
    “OS error code 14: Bad address”
    “OS error code 15: Block device required”
    “OS error code 16: Device or resource busy”
    “OS error code 17: File exists”
    “OS error code 18: Invalid cross-device link”
    “OS error code 19: No such device”
    “OS error code 20: Not a directory”
    “OS error code 21: Is a directory”
    “OS error code 22: Invalid argument”
    “OS error code 23: Too many open files in system”
    “OS error code 24: Too many open files”
    “OS error code 25: Inappropriate ioctl for device”
    “OS error code 26: Text file busy”
    “OS error code 27: File too large”
    “OS error code 28: No space left on device”
    “OS error code 29: Illegal seek”
    “OS error code 30: Read-only file system”
    “OS error code 31: Too many links”
    “OS error code 32: Broken pipe”
    “OS error code 33: Numerical argument out of domain”
    “OS error code 34: Numerical result out of range”
    “OS error code 35: Resource deadlock avoided”
    “OS error code 36: File name too long”
    “OS error code 37: No locks available”
    “OS error code 38: Function not implemented”
    “OS error code 39: Directory not empty”
    “OS error code 40: Too many levels of symbolic links”
    “OS error code 42: No message of desired type”
    “OS error code 43: Identifier removed”
    “OS error code 44: Channel number out of range”
    “OS error code 45: Level 2 not synchronized”
    “OS error code 46: Level 3 halted”
    “OS error code 47: Level 3 reset”
    “OS error code 48: Link number out of range”
    “OS error code 49: Protocol driver not attached”
    “OS error code 50: No CSI structure available”
    “OS error code 51: Level 2 halted”
    “OS error code 52: Invalid exchange”
    “OS error code 53: Invalid request descriptor”
    “OS error code 54: Exchange full”
    “OS error code 55: No anode”
    “OS error code 56: Invalid request code”
    “OS error code 57: Invalid slot”
    “OS error code 59: Bad font file format”
    “OS error code 60: Device not a stream”
    “OS error code 61: No data available”
    “OS error code 62: Timer expired”
    “OS error code 63: Out of streams resources”
    “OS error code 64: Machine is not on the network”
    “OS error code 65: Package not installed”
    “OS error code 66: Object is remote”
    “OS error code 67: Link has been severed”
    “OS error code 68: Advertise error”
    “OS error code 69: Srmount error”
    “OS error code 70: Communication error on send”
    “OS error code 71: Protocol error”
    “OS error code 72: Multihop attempted”
    “OS error code 73: RFS specific error”
    “OS error code 74: Bad message”
    “OS error code 75: Value too large for defined data type”
    “OS error code 76: Name not unique on network”
    “OS error code 77: File descriptor in bad state”
    “OS error code 78: Remote address changed”
    “OS error code 79: Can not access a needed shared library”
    “OS error code 80: Accessing a corrupted shared library”
    “OS error code 81: .lib section in a.out corrupted”
    “OS error code 82: Attempting to link in too many shared libraries”
    “OS error code 83: Cannot exec a shared library directly”
    “OS error code 84: Invalid or incomplete multibyte or wide character”
    “OS error code 85: Interrupted system call should be restarted”
    “OS error code 86: Streams pipe error”
    “OS error code 87: Too many users”
    “OS error code 88: Socket operation on non-socket”
    “OS error code 89: Destination address required”
    “OS error code 90: Message too long”
    “OS error code 91: Protocol wrong type for socket”
    “OS error code 92: Protocol not available”
    “OS error code 93: Protocol not supported”
    “OS error code 94: Socket type not supported”
    “OS error code 95: Operation not supported”
    “OS error code 96: Protocol family not supported”
    “OS error code 97: Address family not supported by protocol”
    “OS error code 98: Address already in use”
    “OS error code 99: Cannot assign requested address”
    “OS error code 100: Network is down”
    “OS error code 101: Network is unreachable”
    “OS error code 102: Network dropped connection on reset”
    “OS error code 103: Software caused connection abort”
    “OS error code 104: Connection reset by peer”
    “OS error code 105: No buffer space available”
    “OS error code 106: Transport endpoint is already connected”
    “OS error code 107: Transport endpoint is not connected”
    “OS error code 108: Cannot send after transport endpoint shutdown”
    “OS error code 109: Too many references: cannot splice”
    “OS error code 110: Connection timed out”
    “OS error code 111: Connection refused”
    “OS error code 112: Host is down”
    “OS error code 113: No route to host”
    “OS error code 114: Operation already in progress”
    “OS error code 115: Operation now in progress”
    “OS error code 116: Stale NFS file handle”
    “OS error code 117: Structure needs cleaning”
    “OS error code 118: Not a XENIX named type file”
    “OS error code 119: No XENIX semaphores available”
    “OS error code 120: Is a named type file”
    “OS error code 121: Remote I/O error”
    “OS error code 122: Disk quota exceeded”
    “OS error code 123: No medium found”
    “OS error code 124: Wrong medium type”
    “OS error code 125: Operation canceled”
    “OS error code 126: Required key not available”
    “OS error code 127: Key has expired”
    “OS error code 128: Key has been revoked”
    “OS error code 129: Key was rejected by service”
    “OS error code 130: Owner died”
    “OS error code 131: State not recoverable”

    2、os.popen

    2.1 示例 os.popen(‘ipconfig’,‘r’)

    import os
    
    # 'r' 消除转义符带来的影响,即'\'
    retValue = os.popen('ipconfig','r')
    res = result.read()
    for line in res.splitlines():
        print(line)
    retValue.close()
    

    3、subprocess

    3.1 示例 subprocess.Popen

    import subprocess
    
    p = subprocess.Popen('ls -l', shell=True)
    print(p.returncode)
    p.wait()
    print(p.returncode)
    

    结果:returncode 成功0 失败1

    subprocess内容比较多(当然也表示能是能干大事的!),建议还是到上面表格的链接区学习吧,或者等我哪天学习到了subprocess,再来总结!

    来源:CDamogu

    物联沃分享整理
    物联沃-IOTWORD物联网 » Python 执行cmd命令的3种方法简单示例,并获取返回信息、执行命令结果(成功 or 失败)

    发表评论