zoukankan      html  css  js  c++  java
  • day-22模块的使用

    configparser 配置文件模块

    是什么:
    用于解析配置文件的模块

    配置文件的定义:
    用于编写保存某个软件或是某个系统的 一系列参数的文件
    设置 参数
    为什么需要配置文件:
    无论是什么样软件应用程序 在执行的过程中 都需要很多的参数
    而一些参数经常会需要修改
    例如: qq里面的下载路径 ATM中的错误次数
    如果直接写死在程序中,使用者在需要修改参数时 就不得不直接修改源代码
    这是非常不合理的,所以我们通常还会吧这些需要变化的参数 放到配置文件中

    读取数据

    import configparser
    #获取解析器对象
    config=configparser.ConfigParser()
    # 读取某个配置文件
    config.read('a.cfg')
    
    #查看所有的分区
    res=config.sections() #['section1', 'section2']
    print(res)
    
    #查看标题section1下所有key=value的key
    options=config.options('section1')
    print(options) #['k1', 'k2', 'user', 'age', 'is_admin', 'salary']
    
    #查看标题section1下所有key=value的(key,value)格式
    item_list=config.items('section1')
    print(item_list) #[('k1', 'v1'), ('k2', 'v2'), ('user', 'egon'), ('age', '18'), ('is_admin', 'true'), ('salary', '31')]
    
    #查看标题section1下user的值=>字符串格式
    val=config.get('section1','user')
    print(val) #egon
    
    #由于使用前需要进行转换,所以模块封装了转换类型的功能,只需要调用对应的函数即可,如下:
    val1=config.getint('section1','age')
    val2=config.getboolean('section1','is_admin')
    val3=config.getfloat('section1','salary')
    
    #是否存在某选项
    print(cfg.has_option("mysql","name"))
    #是否存在某分区
    print(cfg.has_section("db"))

    添加,删除,修改

    import configparser
    
    config=configparser.ConfigParser()
    config.read('a.cfg',encoding='utf-8')
    
    #删除整个标题section2
    config.remove_section('section2')
    
    #删除标题section1下的某个k1和k2
    config.remove_option('section1','k1')
    config.remove_option('section1','k2')
    
    #判断是否存在某个标题
    print(config.has_section('section1'))
    
    #判断标题section1下是否有user
    print(config.has_option('section1',''))
    
    
    #添加一个标题
    config.add_section('jack')
    
    #在标题egon下添加name=egon,age=18的配置
    config.set('jack','name','egon') # 如果已存则覆盖原来的值
    #config.set('jack','age',18) #报错,必须是字符串
    
    #最后将修改的内容写入文件,完成最终的修改
    config.write(open('a.cfg','w'))

    代码创建生成文件

    import configparser
    
    config = configparser.ConfigParser()
    config.add_section("setion1")
    config.set("setion1","name","zhangsn")
    
    with open("test.config","w") as f:
        config.write(f)

    总结configparser 用于解析配置文件,虽然可以修改和,创建,配置文件,但是并不常用,解析才是其核心功能!

    subprocess 模块

    什么是进程
    指的是一个正在运行中的程序
    子进程指的是由另个一进程开启的进程 a在运行过程中 开启了b b就是a的子进程

    为什么要开启子进程
    当一个程序在运行过程中有一个任务,自己做不了或是不想做 就可以开启另一个进程来帮助其完成任务
    例如 qq中收到一个链接 点击链接 就开启了; 浏览器 浏览器就是qq的子进程

    可以理解为用于执行系统指令的模块
    p = subprocess.Popen("ls",shell=True)
    #shell=True 告诉系统这是一个系统指令 而不是某个文件名
    #此时效果与sys.system()没有任何区别,都是将结果输出到控制台
    
    # 那如何与这个进程交互数据呢,这需要用到三个参数
    1.stdin  表示输入交给子进程的数据
    2.stdout 表示子进程返回的数据
    3.stderr 表示子进程发送的错误信息
    
    #这三个参数,的类型都是管道,(管道本质就是一个文件,可以进行读写操作),使用subprocess.PIPE来获取一个管道
    理解了三个参数的意义后让我们来实现一个小功能
    
    一个子进程执行tasklist命令获取所有的任务信息,然后将结果交给另一个进程进行查找
    
    另一个子进程执行findstr 查找某个任务信息  
    
    ```python
    p1 = subprocess.Popen("tasklist",shell=True,stdout=subprocess.PIPE)
    p2 = subprocess.Popen("findstr smss",shell=True,stdin=p1.stdout,stdout=subprocess.PIPE)
    print(p2.stdout.read())
    ```
    
    总结: subprocess 主要用于执行系统命令,对比sys.system 区别在于可以在进程间交换数据

    xlrd模块

    是python中一个第三方的用于读取excle表格的模块

    exlce结构分析

    一个excle表格包含多个sheet

    一个sheet中包含多行多列

    每个单元格具备唯一的行号和列号

    常用函数

    import xlrd
    
    # 读取文件
    work_book = xlrd.open_workbook("/Users/jerry/Desktop/公司机密数据.xlsx")
    # 选取一个表
    
    # 获取所有所有表格名称
    print(work_book.sheet_names())
    
    # 选择第2个  索引从0开始
    sheet = work_book.sheet_by_index(1)
    
    # 表格名称
    print(sheet.name)
    
    # 行数
    print(sheet.nrows)
    # 列数
    print(sheet.ncols)
    
    
    #批量读取行数据
    # 取出第6行的全部内容包含数据类型
    print(sheet.row(6))
    # 取出第6行的内容包含数据类型 从第3列开始获取
    print(sheet.row_slice(6,start_colx=3))
    
    # 取出第6行的内容包含数据类型 从第3列开始获取
    print(sheet.row_slice(6,start_colx=4,end_colx=5))
    
    # 获取该行所有数据类型 一数字表示
    # print(sheet.row_types(6))
    # print(sheet.row_values(6))
    
    
    # 单元格的处理
    print(sheet.cell(0,0).value) # 取值
    print(sheet.cell(0,0).ctype) # 取类型
    print(sheet.cell_value(2,0)) # 直接取值
    
    print(sheet.row(0)[0]) # 先取行再取单元格
    print(sheet.col(0)) # 第0列所有数据
    print(sheet.col(0)) # 先取列再取单元格
    
    print(sheet.cell_type(0,0))
    
    # 单元格位置转换
    print(xlrd.cellname(2,1))
    print(xlrd.cellnameabs(0,2))
    print(xlrd.colname(5))
    
    
    # 时间类型转换
    # print(sheet.cell(6,5).value)
    # print(xlrd.xldate_as_datetime(sheet.cell(6,5).value,1))

    xlwt模块

    是python中一个第三方的用于写入excle数据到表格的模块

    用代码来编写exlce是非常低效的 所以该模块了解即可。

    import xlwt
    # 创建工作簿
    work = xlwt.Workbook()
    # 创建一个表
    sheet = work.add_sheet("员工信息数据")
    
    
    #创建一个字体对象
    font = xlwt.Font()
    font.name = "Times New Roman" # 字体名称
    font.bold = True # 加粗
    font.italic = True # 斜体
    font.underline = True # 下划线
    
    #创建一个样式对象
    style = xlwt.XFStyle()
    style.font = font
    
    
    # 写入标题
    for k in keys:
        sheet.write(0,keys.index(k),k,style)
    
    # 写入数据
    for i in infos:
        for k in keys:
            sheet.write(1 + infos.index(i),keys.index(k),label = i[k])
    # 保存至文件
    work.save("test.xls")
  • 相关阅读:
    个人永久性免费-Excel催化剂功能第43波-文本处理类函数增强
    个人永久性免费-Excel催化剂功能第42波-任意字符指定长度随机函数
    个人永久性免费-Excel催化剂功能第41波-文件文件夹相关函数
    个人永久性免费-Excel催化剂功能第40波-工资、年终奖个人所得税计算函数
    个人永久性免费-Excel催化剂功能第39波-DotNet版的正则处理函数
    安装的SQL Server2008 R2版的连接不到本地数据,提示未找到或无法访问服务器。----复制自百度知道
    System.Web.mail ----虚拟发件人发送邮件
    chosen.jquery.min.js select2.js 弊端
    web打印
    用window.print()打印如何去掉页眉和页脚
  • 原文地址:https://www.cnblogs.com/klw1/p/10864178.html
Copyright © 2011-2022 走看看