python执行系统命令的方法

os.popen()、os.system()、subprocess.Popen()、subprocess.getoutput()、subprocess.getstatusoutput()

 

1、os.popen(cmd): 返回一个地址: <os._wrap_close object at 0x101f22dc0>

2、os.popen(cmd).read():返回所读取得地址的内容

3、os.system(cmd):返回执行结果状态码(执行的内容会显示,但不会返回),0表示正确,非0表示错误

4.1、subprocess.run(cmd,shell=True):返回执行结果及 CompletedProcess 实例 => CompletedProcess(args='ls -l', returncode=0)

输入参数可以是一个字符串或列表,如果是字符串则需要shell = True;

4.2、subprocess.run(["ls", "-l", "/dev/null"]): 输入参数是一个列表
crw-rw-rw- 1 root wheel 3, 2 Jan 22 17:09 /dev/null
CompletedProcess(args=['ls', '-l', '/dev/null'], returncode=0)

5、status, output = subprocess.getstatusoutput(cmd):返回的结果和状态分开

6、subprocess.getoutput(cmd):只返回运行结果,无运行状态

import os, subprocess

a = "-l"
cmd = 'ls {}'.format(a)

print("-------os.popen(cmd):返回一个地址")
os_popen = os.popen(cmd)
print(os_popen)

print("\n-------os.popen(cmd).read():读取地址的内容")
os_popen_read = os.popen(cmd).read()
print(os_popen_read)

print("\n-------os.system(cmd):返回内容以及执行结果,0表示正确")
os_system = os.system(cmd)
print(os_system)

print("\n-------os.system(cmd):返回内容以及执行记结果,非0表示错误")
os_system_error = os.system(cmd+"4")
print(os_system_error)

print("\n------subprocess.run(cmd,shell=True):输入参数可以是一个列表或字符串,如果是一个字符串,则需要shell=True")
subprocess_run_string = subprocess.run(cmd,shell=True)
print(subprocess_run_string)

print("\n------subprocess.run([string1, string2]):输入参数可以是一个列表或字符串如果是一个字符串则需要shell=True")
subprocess_run_list = subprocess.run(["ls", "-l", "/dev/null"])
print(subprocess_run_list)

print("\n-------status, output = subprocess.getstatusoutput(cmd):运行结果和状态分开返回")
status, output = subprocess.getstatusoutput(cmd)
print("-------status--------")
print(status)
print("-------output--------")
print(output)

print("\n-----subprocess.getoutput(cmd):只返回运行结果")
subprocess_getoutput = subprocess.getoutput(cmd)
print(subprocess_getoutput)
几种执行系统命令方式

 

-------os.popen(cmd):返回一个地址
<os._wrap_close object at 0x101f22dc0>

-------os.popen(cmd).read():读取地址的内容
total 40
-rw-r--r--  1 ad  staff   172 Jan 22 16:26 listNode.py
-rw-r--r--@ 1 ad  staff  1153 Jan 22 16:39 test3.py
-rw-r--r--  1 ad  staff   521 Jan 22 00:35 一星.py
-rw-r--r--  1 ad  staff   435 Jan 22 00:36 排序汇总.py
-rw-r--r--  1 ad  staff  3399 Jan 22 00:36 算法.py


-------os.system(cmd):返回内容以及执行结果,0表示正确
total 40
-rw-r--r--  1 ad  staff   172 Jan 22 16:26 listNode.py
-rw-r--r--@ 1 ad  staff  1153 Jan 22 16:39 test3.py
-rw-r--r--  1 ad  staff   521 Jan 22 00:35 一星.py
-rw-r--r--  1 ad  staff   435 Jan 22 00:36 排序汇总.py
-rw-r--r--  1 ad  staff  3399 Jan 22 00:36 算法.py
0

-------os.system(cmd):返回内容以及执行记结果,非0表示错误
ls: illegal option -- 4
usage: ls [-ABCFGHLOPRSTUWabcdefghiklmnopqrstuwx1] [file ...]
256

------subprocess.run:输入参数可以是一个列表,如果是一个字符串,则需要shell = True
total 40
-rw-r--r--  1 ad  staff   172 Jan 22 16:26 listNode.py
-rw-r--r--@ 1 ad  staff  1153 Jan 22 16:39 test3.py
-rw-r--r--  1 ad  staff   521 Jan 22 00:35 一星.py
-rw-r--r--  1 ad  staff   435 Jan 22 00:36 排序汇总.py
-rw-r--r--  1 ad  staff  3399 Jan 22 00:36 算法.py
CompletedProcess(args='ls -l', returncode=0)

-------status, output = subprocess.getstatusoutput:运行结果和状态分开返回
-------status--------
0
-------output--------
total 40
-rw-r--r--  1 ad  staff   172 Jan 22 16:26 listNode.py
-rw-r--r--@ 1 ad  staff  1153 Jan 22 16:39 test3.py
-rw-r--r--  1 ad  staff   521 Jan 22 00:35 一星.py
-rw-r--r--  1 ad  staff   435 Jan 22 00:36 排序汇总.py
-rw-r--r--  1 ad  staff  3399 Jan 22 00:36 算法.py

-----subprocess.getoutput(cmd):只返回运行结果
total 40
-rw-r--r--  1 ad  staff   172 Jan 22 16:26 listNode.py
-rw-r--r--@ 1 ad  staff  1153 Jan 22 16:39 test3.py
-rw-r--r--  1 ad  staff   521 Jan 22 00:35 一星.py
-rw-r--r--  1 ad  staff   435 Jan 22 00:36 排序汇总.py
-rw-r--r--  1 ad  staff  3399 Jan 22 00:36 算法.py
[Finished in 0.3s]
几种执行命令方式返回的结果

 

posted @ 2022-01-22 17:22  yudai  阅读(440)  评论(0编辑  收藏  举报