• python常用模块


    1.yagmail模块

    python标准库中发送电子邮件的模块比较复杂,因此,有许多开原的库提供了更加易用的接口来发送电子邮件,其中yagmail是一个使用比较广泛的开原项目,yagmail底层依然使用了smtplib和email模块,但是yagmail提供了更好的接口,并具有更好的易读性

    yagmail是开原项目,因此,在使用前需要安装

    pip install yagmail

    连接邮箱服务器

    yag = yagmail.SMTP(user='xxx@163.com', password='xxxx', host='smtp.163.com')

    发送邮件

    yag.send(to='xxx@126.com', cc='xxx@163.com',subject='这是测试邮件', contents='这是测试邮件的内容')

    断开连接

    yag.close()

    2. 时间戳

    import time

    start_time=time.time()

    time.sleep(2)

    end_time=time.time()

    print(end_time-start_time)

    可以计算出start_time=time.time()与end_time=time.time()之间的时间

    3. configparser模块

    3.1 ConfigParser简介

    ConfigParser 是用来读取配置文件的包。配置文件的格式如下:中括号“[ ]”内包含的为section。section 下面为类似于key-value 的配置内容。

    下面的info.txt文件内容如下

    [db]

    db_host = 127.0.0.1

    db_port = 69

    db_user = root

    db_pass = root

    host_port = 69

    [concurrent]

    thread = 10

    processor = 20

    括号“[ ]”内包含的为section;db_host这些为option

    3.2 ConfigParser 初始化对象

    使用ConfigParser 首选需要初始化实例,并读取配置文件:

    import configparser

    config=configparser.ConfigParser()

    config.read("info.txt",encoding='gbk')

    3.3 ConfigParser 常用方法

    1.获取所用的section节点

    print(config.sections())

    ['db', 'concurrent']

    2.获取指定section 的options。即将配置文件某个section 内key 读取到列表中:

    print(config.options('db'))

    ['db_host', 'db_port', 'db_user', 'db_pass', 'host_port']

    3. 获取指点section下指点option的值

    print(config.get('db','db_host'))

    127.0.0.1

    # r1 = config.getint("db", "k1") #将获取到值转换为int型

    # r2 = config.getboolean("db", "k2" ) #将获取到值转换为bool型

    # r3 = config.getfloat("db", "k3" ) #将获取到值转换为浮点型

    4. 修改某个option的值,如果不存在则会出创建

    config.set('db','db_user','admin') #修改db_user的值为admin

    config.write(open('info.txt','w'))

    5. 检查section或option是否存在,结果以bool的形式

    print(config.has_section('db1')) #是否存在该

    print(config.has_option('db','db_test')) #是否存在db的section并且有db_test的option

    6.添加section 和 option

    config.add_section('lzb') #添加lzb这个section

    config.write(open('info.txt','w'))

    config.set('lzb','name','libai') #在lzb这个section添加name=libai

    config.write(open('info.txt','w'))

    7. 删除section 和 option

    config.remove_section('lzb') #整个lzb的section下的所有内容都将删除

    config.write(open('info.txt','w'))

    config.remove_option('db','db_test') #将db的section中的db_test删除

    config.write(open('info.txt','w'))

    8. 将section下的所有信息都列出来

    print(config.items('db'))

    [('db_host', '127.0.0.1'), ('db_port', '69'), ('db_user', 'admin'), ('db_pass', 'root'), ('host_port', '69')]

    4. paramiko模块

    安装:pip install paramiko

    4.1 通过paramiko模块连接主机运行bash命令

    虚拟机ip:192.168.88.10

    user:root

    password:123456

    import paramiko

    ssh=paramiko.SSHClient()

    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

    cmd=input('请输入:')

    ssh.connect(hostname='192.168.88.10',port=22,username='root',password='123456')

    stdin,stdout,stderr = ssh.exec_command(cmd)

    print(stdout.read().decode('utf-8'))

    print(stderr.read().decode('utf-8'))

    stdin:标准输入

    stdout:标准输出

    stderr:标准错误

    4.2 通过paramiko模块连接主机下载

    t=paramiko.Transport(('192.168.88.10',22))

    t.connect(username='root',password='123456')

    sftp=paramiko.SFTPClient.from_transport(t)

    sftp.get(r'/root/a',r'C:Users15116Desktopa')

    sftp.close()

    get是将linux端的文件发送到windows端

    4.3 通过paramiko模块连接主机上传

    t=paramiko.Transport(('192.168.88.10',22))

    t.connect(username='root',password='123456')

    sftp=paramiko.SFTPClient.from_transport(t)

    sftp.put(r'C:Users15116Desktoplock.txt',r'/root/lock1.txt')

    sftp.close()

    put是将windows端的文件发送到linux端

    5. os模块

    5.1 获取当前工作路径

    import os

    print(os.getcwd())

    H:python1

    5.2 改变当前工作路径

    import os

    print(os.getcwd())

    os.chdir('H:python')

    print(os.getcwd())

    H:python1

    H:python

    5.3 返回上级目录用 ..

    print(os.getcwd())

    os.chdir('..')

    print(os.getcwd())

    H:python1

    H:

    5.4 建递归的目录

    os.makedirs('s1/s2/s3')

    os.chdir('s1/s2/s3')

    print(os.getcwd())

    H:python1s1s2s3

    5.5 新建目录,只能建一层

    os.mkdir('b1')

    os.chdir('b1')

    print(os.getcwd())

    H:python11

    5.6 只能删除单级目录为空的文件夹

    os.rmdir('b1')

    5.7 列出指定文件夹下面所有的文件夹和文件包括隐藏文件,以列表方式打印出来

    print(os.listdir('H:python1'))

    ['.idea', '6.1.py', '6.1.spec', '6

    3·.3homework1.py', '6.3homework2.py']

    5.8 删除指定的一个文件

    os.remove('b1/test.txt')

    5.9 修改文件夹名字或者是文件名字都可以

    os.rename('b1','b2') #将b1文件重命名为b2

    5.10 查看一个文件的详细信息

    print(os.stat('test.txt'))

    H:pythonpython.exe H:/python1/6.5os模块.py

    os.stat_result(st_mode=33206, st_ino=562949953434537, st_dev=337607633, st_nlink=1, st_uid=0, st_gid=0, st_size=4, st_atime=1559719610, st_mtime=1559719533, st_ctime=1559719523)

    st_size=28 文件大小,单位是字节

    st_atime=1528473600 用户上一次的访问时间

    st_mtime=1528552906 用户上一次修改的时间(常用)

    st_ctime=1528552713 用户的创建文件的时间

    这个时间是时间戳,想要转换成我们能看懂的那种格式,还得转换下,比如用户创建文件时间是1528552713 转换为字符串时间

    5.11 运行shell命令,直接显示结果

    os.system('tasklist') #执行tasklist命令

    res=os.system('tasklist > lock.txt') #返回的结果,0代表执行成功,非0代表不成功

    print(res)

    0

    实例:在linux系统下

    cmds = ['ls -ltr','df -h','ifconfig ens33 192.168.254.250/24']

    for cmd in cmds:

    res = os.system(cmd)

    if res == 0:

    continue

    else:

    break

    5.12 判断路径是否存在,存在为True,不存在为False

    print(os.path.exists('H:python1'))

    True

    5.13 判断一个文件是否存在,存在为True,否则为False

    print(os.path.isfile('‪H:python1info.txt'))

    5.14 判断一个目录是否存在,存在为True,否则为False

    print(os.path.isdir('test.txt'))

    5.15 路径拼接

    a='H:python1'

    b='s1ss.txt'

    print(os.path.join(a,b))

    H:python1s1ss.txt

    5.pymysql模块:操作数据库

    连接数据库之前,要确保连接的数据库的可以第三方登陆(%)

    5.1 创建数据库test

    import pymysql #导入模块

    # 连接数据库,

    db=pymysql.connect(host='192.168.88.10',user='root',password='123',port=3306)

    # 使用cursor()方法获取操作游标

    cur=db.cursor() # 执行sql语句

    sql='create database test character set utf8;' # 输入数据库里的sql命令

    db.close() #关闭db,关闭与数据库的连接

    5.2 查询数据库中表的信息

    import pymysql

    db=pymysql.connect(host='192.168.88.10',user='root',password='123',db='mysql',port=3306)

    cur=db.cursor()

    sql='select host,user,password from user;'

    cur.execute(sql) # 执行sql语句

    results=cur.fetchall() #获取查询的所有记录

    # print(results)

    for i in results: # 将取出来的数据分行显示出来

    print(i)

    db.close()

    5.4 在数据库的表中插入多行数据

    import pymysql

    db=pymysql.connect(host='192.168.88.10',user='root',password='123',db='test',port=3306)

    cur=db.cursor()

    for n in range(20):

    sql='insert into students values (0,"name-%s")' % n

    cur.execute(sql)

    results=cur.fetchall()

    db.commit() #在第三方对数据库进行增删改操作的时候,默认开启事务,因此需要进行提交操作

    db.close()

    6.socket模块

    利用ip地址和端口号来进行通信的模块

    实例1:测试22端口是否开启

    import socket

    ser=socket.socket()

    res=ser.connect_ex(('192.168.88.10',22))

    print(res)

    输出结果如下:

    0 # 如果22端口通返回结果为0,不通返回不为0的数字

    实例2:监控多台主机

    import socket

    hosts=['192.168.88.5:80','192.168.88.10:22','192.168.88.12:22','192.168.88.15:22']

    for host in hosts:

    server=socket.socket()

    server.settimeout(1) # ip通,端口不通,会循环ping,这里设置ping的时长

    ip=host.split(':')[0]

    port=host.split(':')[1]

    res=server.connect_ex((ip,int(port)))

    if res==0:

    print('%s正常' % ip)

    else:

    print('%s不正常' % ip)

    输出结果如下:

    192.168.88.5不正常

    192.168.88.10正常

    192.168.88.12不正常

    192.168.88.15不正常

  • 相关阅读:
    Docker 学习4 Docker容器虚拟化网络概述
    Ceph 命令
    Day_09【常用API】扩展案例1_程序中使用一个长度为3的对象数组,存储用户的登录名和密码……
    Day_08【面向对象】扩展案例4_年龄为30岁的老王养了一只黑颜色的2岁的宠物……
    Day_08【面向对象】扩展案例3_使用多态的形式创建缉毒狗对象,调用缉毒方法和吼叫方法
    Day_08【面向对象】扩展案例2_测试旧手机新手机类,并给新手机实现玩游戏功能
    Day_08【面向对象】扩展案例1_测试项目经理类和程序员类
    用两个栈实现队列
    二叉树前序、中序、后序遍历相互求法
    洗牌
  • 原文地址:https://www.cnblogs.com/liangzb310/p/11027019.html
Copyright © 2020-2023  润新知