zoukankan      html  css  js  c++  java
  • 模块 configparser subprocess 表格 的

    用途:
    configparser 用来解析配置文件的 ,
    subprocess当你需要执行系统指令时 你需要想起它
    xlrd 用于读取表格数据的 
    xlwt用于将数据写入到表格中
    xlrd xlwt 是一个第三方的需要自己安装 pip install xlrd

    configparser:

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

    配置文件的定义:
    用于编写保存某个软件或是某个系统的 一系列参数的文件
    设置 参数
    为什么需要配置文件
    无论是什么样软件应用程序 在执行的过程中 都需要很多的参数
    而一些参数经常会需要修改
    configparser 用来解析配置文件的 
    对配置文件有各式要求
    只能由分区和选项
    section 和 option
    同一个section' 不能有重复的option
    不能有重复的section
    不区分数据类型 都是字符串
    # 可以用来注释
    任何option都必须包含在section

    需要掌握的方法
    read(文件路径,编码)
    get(分区名称,选项名称) 返回的是字符串
    getint getfloat getboolean
    import configparser
    # 创建 解析对象
    c = configparser.ConfigParser()
    c.read("atm.cfg",encoding="utf-8") # 读取指定的配置文件
    
    # 获取一个配置项
    count = int(c.get("atm","err_count"))
    print(int(count))
    
    import configparser
    
    c = configparser.ConfigParser()
    c.read("atm.cfg",encoding="utf-8")
    
    # 获取所有分区名称
    print(c.sections())
    # 某个分区下所有option名字
    print(c.options("atm"))
    
    # 封装了类型转换的方法
    # count = c.getint("atm","err_count")
    # c.getfloat()
    # c.getboolean()
    
    
    # c.set("atm","test","123")# 设置某个选项的值 如果option以及存在则覆盖
    # c.add_section("atm1") # 添加一个新分区
    # c.set("atm1","test","123")
    
    print(list(c.keys()))
    # print(list(c.values())[1].name)
    print(list(c.values()))
    # dir 可以查看 某个对象所有可用的属性  __开头不要管 系统自带的
    print(dir(list(c.values())[1]))
    
    # 写入数据到文件
    with open("atm.cfg","wt",encoding="utf-8") as f:
        c.write(f)
    
    
    import configparser
    c = configparser.ConfigParser()
    
    c.add_section("test")
    c.set("test","name","jack")
    
    with open("test.cfg","wt",encoding="utf-8") as f:
        c.write(f)

    subprocess

    子进程

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

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


    可以理解为用于执行系统指令的模块

    """

    import subprocess
    import os
    # os.system("dir")

    # 内存中 每个进程的内存区域是相互隔离的不能直接访问 所以需要管道来通讯
    # stdout=subprocess.PIPE就是指定了一个输出管道
    # p = subprocess.Popen("dir",shell=True,stdout=subprocess.PIPE)
    # # 从管道中读取出执行结果
    # reuslt = p.stdout.read().decode("GBK")



    # 三个管道
    # p1 = subprocess.Popen("dirs",shell=True,stdout=subprocess.PIPE,stderr=-1)
    # print(p1.stdout.read())
    # print(p1.stderr.read().decode("GBK"))

    # 案例:
    # tasklist | findstr python  # 先执行tasklist 把结果交给 findstr 来处理
    
    p1 = subprocess.Popen("tasklist",shell=True,stdout=subprocess.PIPE)
    
    p2 = subprocess.Popen("findstr QQ",shell=True,stdin=p1.stdout,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
    
    print(p2.stdout.read())
    print(p2.stderr.read())


    参数1 指令
    # 2 是否是一个指令
    # 3 错误输出管道
    # 4 输入管道
    # 5 输出管道
    # p = subprocess.Popen("你的指令或是某个exe",shell=True,stderr=,stdin=,stdout=)
    # # 取出管道中的数据
    # p.stderr.read()
    # p.stdout.read()
    # # 将输入写入管道 交给对方进程
    # p.stdin.write(p.stdout.read())
     

    xlrd

    模块是用于读取表格数据的 
    xlrd 是一个第三方的需要自己安装 pip install xlrd

    import xlrd
    
    workbook = xlrd.open_workbook("机密数据.xlsx")
    #查看所有工作表的名称
    print(workbook.sheet_names())
    
    # 获取某个工作表
    # sheet = workbook.sheet_by_index(1)
    sheet = workbook.sheet_by_name("Sheet1")
    # print(sheet.name)
    #
    # # 获取某一行
    row = sheet.row(2)
    # print(row)
    #
    #
    # # 获取单元格
    cell = row[4]
    # print(cell.ctype) # 单元格的数据类型
    # print(cell.value)#  单元格的数据
    #
    # # 转换日期类型
    print(str(xlrd.xldate_as_datetime(cell.value,0)))
    
    # 获取表格的列数
    # print(sheet.ncols)
    # # 获取表格的行数
    # print(sheet.nrows)
    
    # 获取第一行的单元格个数
    # print(sheet.row_len(1))
    
    # 某个单元格数据
    print(sheet.cell(0,0))
    
    # 将数据读取出来变成python的数据类型 [{},{},{}]
    
    # 案例 将边个数据提取为python数据类型
    # 最后的列表
    li = []
    # 先拿出所有的列名称
    keys = sheet.row_values(1)
    for i in range(2,sheet.nrows):
        print(i)
        # row = sheet.row(i)
        # 直接取出所有值
        row = sheet.row_values(i)
        # 创建一个空字典
        dic = {}
        for k in keys:
            # 每次拿出一个key 与一个value 一一对应
            dic[k] = row[keys.index(k)]
            if k == "生日":
                # 如果是生日字段 需要转换时间类型
                dic[k] = str(xlrd.xldate_as_datetime(row[keys.index(k)],0))
        li.append(dic)
    print(li)
    

      

    xlrd 模块是用于读取表格数据的 
    xlrd 是一个第三方的需要自己安装 pip install xlrd

    打开文件
    wb
    wb = xlrd.open_workbook("路径")
    # 获取某个表格
    sheet = wb.sheet_by_name()
    sheet = wb.sheet_by_index()

    # 获取行数
    sheet.nrows()
    # 获取列数
    sheet.ncols()

    # 取某行数据
    sheet.row_values(行索引)

    # 获取某单元格的数据
    sheet.cell(行,列).value


    xlwt 是第三方的用于生成一个Exel表格

    """
    # 创建一个工作薄
    wb = xlwt.Workbook()
    # 创建一个工作表
    sheet = wb.add_sheet("特工信息") # type:xlwt.Worksheet

    # 字体对象
    font = xlwt.Font()
    font.bold = True

    # style样式对象
    style = xlwt.XFStyle()
    style.font = font # 将字体设置到样式中

    # 写入数据
    # sheet.write(0,0,"这是标题")
    # 写入 并合并单元格
    sheet.write_merge(0,0,0,4,"这是标题",style)

    # 将工作薄写入到文件
    wb.save("abc.xls")










  • 相关阅读:
    使用arcpy添加grb2数据到镶嵌数据集中
    使用python把gdb格式的文本文件转为utf-8的格式
    Spring Cloud
    windows 下nginx配置php支持
    nginx开启gzip
    ant design 修改tab样式
    使用arcpy替换工程文件中的栅格图层数据源异常
    cenos 安装hadoop
    失败
    linux挂载新硬盘
  • 原文地址:https://www.cnblogs.com/wyf20190411-/p/10864308.html
Copyright © 2011-2022 走看看