博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
day-22模块的使用
阅读量:5098 次
发布时间:2019-06-13

本文共 4243 字,大约阅读时间需要 14 分钟。

configparser 配置文件模块

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

读取数据

import configparser#获取解析器对象config=configparser.ConfigParser()# 读取某个配置文件config.read('a.cfg')#查看所有的分区res=config.sections() #['section1', 'section2']print(res)#查看标题section1下所有key=value的keyoptions=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 configparserconfig=configparser.ConfigParser()config.read('a.cfg',encoding='utf-8')#删除整个标题section2config.remove_section('section2')#删除标题section1下的某个k1和k2config.remove_option('section1','k1')config.remove_option('section1','k2')#判断是否存在某个标题print(config.has_section('section1'))#判断标题section1下是否有userprint(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 configparserconfig = 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 查找某个任务信息  ```pythonp1 = 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")

 

转载于:https://www.cnblogs.com/klw1/p/10864178.html

你可能感兴趣的文章
WPF中实现多选ComboBox控件
查看>>
读构建之法第四章第十七章有感
查看>>
Windows Phone开发(4):框架和页 转:http://blog.csdn.net/tcjiaan/article/details/7263146
查看>>
python asyncio 异步实现mongodb数据转xls文件
查看>>
TestNG入门
查看>>
【ul开发攻略】HTML5/CSS3菜单代码 阴影+发光+圆角
查看>>
IOS-图片操作集合
查看>>
IO—》Properties类&序列化流与反序列化流
查看>>
jquery实现限制textarea输入字数
查看>>
Codeforces 719B Anatoly and Cockroaches
查看>>
ActiveMQ与spring整合
查看>>
EOS生产区块:解析插件producer_plugin
查看>>
格式化输出数字和时间
查看>>
页面中公用的全选按钮,单选按钮组件的编写
查看>>
java笔记--用ThreadLocal管理线程,Callable<V>接口实现有返回值的线程
查看>>
关于TFS2010使用常见问题
查看>>
URL编码与解码
查看>>
Eclipse 安装SVN插件
查看>>
阿里云服务器CentOS6.9安装Mysql
查看>>
剑指offer系列6:数值的整数次方
查看>>