• python基础之常用模块一(sys、greenlet、pymysql、paramiko、pexpect、configparser)


    一、sys模块(内置模块)

    用于提供对解释器相关的操作

    import sys
    sys.argv 命令行参数List,第一个元素是程序本身路径 sys.exit(n) 退出程序,正常退出时exit(0) sys.version 获取Python解释程序的版本信息 sys.maxint 最大的Int值 sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值 sys.platform 返回操作系统平台名称 sys.stdout.write('please:') val = sys.stdin.readline()[:-1]

    sys模块更多用法:https://docs.python.org/2/library/sys.html?highlight=sys#module-sys

    二、Greenlet模块

    IO操作,即对硬盘上的数据进行读写操作。

    greenlet只是提供了一种比generator更加便捷的切换方式,当切到一个任务执行时如果遇到IO,那就原地阻塞,仍然是没有解决遇到IO自动切换来提升效率的问题。

    单线程里的这20个任务的代码通常会既有计算操作又有阻塞操作,我们完全可以在执行任务1时遇到阻塞,就利用阻塞的时间去执行任务2......如此,才能提高效率,这就用到了Gevent模块

    from greenlet import greenlet  #greenlet协程模块
    # 定义吃
    def eat():
        print('eat-start')
        g2.switch() #
        print('eat-end')
    # 定义玩
    def play():
        print('play happy')
        g1.switch() # 切回对应的方法接着执行
    g1 = greenlet(eat)
    g2 = greenlet(play)
    g1.switch()#可以在第一次switch时传入参数,以后都不需要;switch是切换的意思
    输出:
    eat-start play happy eat-end

    三、paramiko模块

    #通过paramiko模块连接主机运行bash命令
    
    import paramiko
    hostname = '192.168.254.24'
    port = 22
    username = 'root'
    password = 'root'
    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh.connect(hostname=hostname,port=port,username=username,password=password)
    stdin, stdout, stderr = ssh.exec_command("ls -ltr")
    print(stdout.read().decode('utf-8'))
    
    #通过paramiko模块连接主机上传
    import paramiko
    hostname = '192.168.254.24'
    port = 22
    username = 'root'
    password = 'root'
    t=paramiko.Transport((hostname,port))
    t.connect(username=username,password=password)
    sftp = paramiko.SFTPClient.from_transport(t)
    sftp.put(r'C:UsersfengziDesktopLinux.xmind', '/root/aaa.xmind')
    sftp.close()
    
    #通过paramiko模块连接主机下载
    import paramiko
    hostname = '192.168.254.24'
    port = 22
    username = 'root'
    password = 'root'
    t=paramiko.Transport((hostname,port))
    t.connect(username=username,password=password)
    sftp = paramiko.SFTPClient.from_transport(t)
    sftp.get('/root/test3.yml', r'C:UsersfengziDesktop	est3.yml')
    sftp.close()

    四、pexpect模块

    import pexpect
    host = '192.168.254.24'
    password = 'root'
    username = 'root'
    child = pexpect.spawn('ssh root@192.168.254.24')
    child.expect('password:')
    child.sendline(password)
    child.expect('#')
    child.sendline('mysql -uroot -proot')
    child.expect('none')
    child.sendline('show variables like "%log%";')
    child.sendline('exit')
    child.sendline('exit')
    child.interact()
    child.close()
    
    #利用pexpect查看其他机器的数据库
    import pexpect
    ssh = pexpect.spawn('ssh 192.168.254.12',timeout=10)
    i = ssh.expect(['password:','continue connecting'],timeout=10)
    print(i)
    if i == 0:
        ssh.sendline('root')
    elif i == 1:
        ssh.sendline('yes
    ')
        ssh.expect('password:')
        ssh.sendline('root
    ')
    index = ssh.expect(['#',pexpect.EOF,pexpect.TIMEOUT],timeout=15)
    if index == 0:
        ssh.sendline('ip a')
        ssh.sendline('exit')
        ssh.interact()
        ssh.close()
    elif index == 1:
        print('logging process exit')
    elif index == 2:
        print('logging in time out')
    
    #ssh登录主机

    五、pymysql模块

    #pymysql操作数据库
    import pymysql
    # 打开数据库连接
    db = pymysql.connect(host="192.168.254.24", user="root",
                         password="root", db="mysql", port=3306)
    
    # 使用cursor()方法获取操作游标
    cur = db.cursor()
    
    # 1.查询操作
    # 编写sql 查询语句  user 对应我的表名
    sql = "select host,user,password from user"
    try:
        cur.execute(sql)  # 执行sql语句
        results = cur.fetchall()  # 获取查询的所有记录
        for i in results:#遍历结果
            print(i)
    except Exception as e:
        raise e
    finally:
        db.close()  # 关闭连接

    六、configparser模块

    1、CconfigParser简介

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

    [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。紧接着section 为类似于key-value 的options 的配置内容。

    2、ConfigParser 初始化对象
    使用ConfigParser 首先需要初始化实例,并读取配置文件:

    import configparser
    config = configparser.ConfigParser()
    config.read("info.txt", encoding="utf-8")

    3、ConfigParser 常用方法

    1、获取所用的section节点
    # 获取所用的section节点
    import configparser
    config = configparser.ConfigParser()
    config.read("info.txt", encoding="utf-8")
    print(config.sections())
    #运行结果
    # ['db', 'concurrent']
    
    2、获取指定section 的options。即将配置文件某个section 内key 读取到列表中:
    import configparser
    config = configparser.ConfigParser()
    config.read("info.txt", encoding="utf-8")
    r = config.options("db")
    print(r)
    #运行结果
    # ['db_host', 'db_port', 'db_user', 'db_pass', 'host_port']
    
    3、获取指点section下指点option的值
    import configparser
    config = configparser.ConfigParser()
    config.read("info.txt", encoding="utf-8")
    r = config.get("db", "db_host")
    # r1 = config.getint("db", "k1") #将获取到值转换为int型
    # r2 = config.getboolean("db", "k2" ) #将获取到值转换为bool型
    # r3 = config.getfloat("db", "k3" ) #将获取到值转换为浮点型
    print(r)
    #运行结果
    # 127.0.0.1
    
    4、获取指点section的所用配置信息
    import configparser
    config = configparser.ConfigParser()
    config.read("info.txt", encoding="utf-8")
    r = config.items("db")
    print(r)
    #运行结果
    #[('db_host', '127.0.0.1'), ('db_port', '69'), ('db_user', 'root'), ('db_pass', 'root'), ('host_port', '69')]
    
    5、修改某个option的值,如果不存在则会出创建
    # 修改某个option的值,如果不存在该option 则会创建
    import configparser
    config = configparser.ConfigParser()
    config.read("info.txt", encoding="utf-8")
    config.set("db", "db_port", "69")  #修改db_port的值为69
    config.write(open("info.txt", "w"))
    #运行结果
    6、检查section或option是否存在,bool值 import configparser config = configparser.ConfigParser() config.has_section("section") #是否存在该section config.has_option("section", "option") #是否存在该option
    7、添加section 和 option import configparser config = configparser.ConfigParser() config.read("info.txt", encoding="utf-8") if not config.has_section("default"): # 检查是否存在section config.add_section("default") if not config.has_option("default", "db_host"): # 检查是否存在该option config.set("default", "db_host", "1.1.1.1") config.write(open("info.txt", "w")) #运行结果
    8、删除section 和 option import configparser config = configparser.ConfigParser() config.read("info.txt", encoding="utf-8") config.remove_section("default") #整个section下的所有内容都将删除 config.write(open("info.txt", "w")) #运行结果
    9、写入文件 以下的几行代码只是将文件内容读取到内存中,进过一系列操作之后必须写回文件,才能生效。 import configparser config = configparser.ConfigParser() config.read("info.txt", encoding="utf-8") 写回文件的方式如下:(使用configparser的write方法) config.write(open("info.txt", "w"))
  • 相关阅读:
    java foreach遍历的前提条件
    Java中的null值总结
    mybatis不可忽略的细节
    设计模式:创建型模式
    设计模式(四):原型模式
    设计模式(三):建造者模式
    设计模式(二):单例模式(DCL及解决办法)
    设计模式(一):简单工厂、工厂模式、抽象工厂
    定时任务 ScheduledExecutorService
    快速访问GitHub
  • 原文地址:https://www.cnblogs.com/renyz/p/11537443.html
Copyright © 2020-2023  润新知