Python基础

Python模块·Subprocess子进程

2022-12-31  本文已影响0人  技术老男孩

一、Subprocess模块的定义:

补充:

二、常用方法:subprocess.run()

分类 函数 / 方法 说明
运行
无参命令
subprocess.run(["command"]) 中括号可加可不加
subprocess.run(“command”,Shell=True) Shell=True可加可不加
运行
有参命令
subprocess.run(["command",“parameter”]) 必须添加中括号,参数可以为多个
subprocess.run(“command parameter”,Shell=True) 可以将命令完整写入
但是需要添加Shell=True来支持shell语法

三、run 方法返回值:

>>> subprocess.run('ls ..', shell=True)  # 最后一行为返回值
day01  day02  day03  day04
CompletedProcess(args='ls ..', returncode=0)

# run方法查看上一级目录下的内容,赋值给变量result
>>> result = subprocess.run('ls ..', shell=True)
day01  day02  day03  day04

# 查看变量result的值,为run()的返回值
>>> result
CompletedProcess(args='ls ..', returncode=0)

# 查看result中args列表的内容,为linux命令
>>> result.args
'ls ..'

# 查看result中returncode的值,为0;returncode 为状态码
# 上一条命令执行成功,结果为0;反之,结果为非零值
>>> result.returncode
'0'

四、实操训练题:

需求:

# 判断是否可以ping通的函数
def check_ping(ip_addresses):
    data = subprocess.run(f"ping -c 2 {ip_addresses} &> /dev/null", shell=True)
    if data.returncode == 0:
        return True
    return False

# 打印ping list 的结果状态
def check_pings(ip_lists):
    for ip in ip_lists:
        if check_ping(ip):
            print(ip, "up")
        else:
            print(ip, "down")

# 初始化
if __name__ == '__main__':
    ip_list = ["192.168.99.100", "192.168.88.10", "192.168.88.210",
               "192.168.88.100", "192.168.88.5", "192.168.88.15",
               "www.baidu.com", "www.yahu.com", "www.douyin.com",
               "www.qq.com", "www.163.com", "www.wangyi.com"]
    check_pings(ip_list)
上一篇 下一篇

猜你喜欢

热点阅读