ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python执行系统命令的方法

2022-01-22 17:32:36  阅读:443  来源: 互联网

标签:rw 系统命令 22 python cmd Jan -- 执行 os


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]
几种执行命令方式返回的结果

 

标签:rw,系统命令,22,python,cmd,Jan,--,执行,os
来源: https://www.cnblogs.com/songshutai/p/15834552.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有