1.configparser模块
configparser模块
含义:
用于解析配置文件的模块
配置文件的定义:
用于编写保存某个软件或是某个系统的 一系列参数的文件
设置 参数
为什么需要配置文件
无论是什么样软件应用程序 在执行的过程中 都需要很多的参数
而一些参数经常会需要修改
例如: 软件里面的下载路径 ATM中的错误次数
如果直接写死在程序中,使用者在需要修改参数时 就不得不直接修改源代码
这是非常不合理的,所以我们通常还会吧这些需要变化的参数 放到配置文件中
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)) c=getint(c.get("atm","err_count")) print(c)
2.configparser模块其他方法
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)
3.subprocess模块
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()) # CMDB 需要收集服务器的信息 比如内存信息
# subprocess需要掌握的方法 # 参数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()) # 当你需要执行系统指令时 你需要想起它
4.xlrd模块
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
# 案例 将边个数据提取为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)
5.xlwt模块
xlwt 是第三方的用于生成一个Exel表格 使用到的几个函数 1.创建工作薄 wb = xlwt.Workbook() # 2.创建工作表 sheet = wb.add_sheet("sheet名字") # 3.写入数据 sheet.write(行,列,数据) # 4. 保存到文件 wb.save("路径")
import xlwt # 创建一个工作薄 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")