一,configparser模块

'''
configparser模块:
是什么:
用于解析配置文件的模块
配置文件的定义:
用于编写保存某个软件或某个系统的一系列参数的文件
设置参数
为什么需要配置文件:
无论是什么样的软件应用程序,在执行过程中,都需要很多的参数
而一些参数经常会需要修改
例如:qq里面的下载路径 ATM中的错误次数
如果直接写死在程序中,使用者在需要修改参数时,就不得不直接修改源代码
这是非常不合理的,所以我们通常还会把这些需要变化的参数提取出来放到配置文件中 ''''' #打开配置文件来读取参数
# with open('atm.cfg','r')as f:
# err_count = int(f.read())
# print(err_count,type(err_count)) import configparser
#创建解析对象
c = configparser.ConfigParser()
c.read('atm.cfg',encoding='utf-8') #读取指定的配置文件 #获取一个配置项
count = int(c.get('atm','err_count'))
print(int(count))
print(type(count)) temp_count = 0
while True:
if temp_count >= count:
print('该账号已经被锁定')
break
name = input('name:')
pwd = input('pwd:')
if name == 'owen' and pwd == '':
print('登录成功')
break
else:
print('账号或密码不正确!')
temp_count += 1
import configparser

# 创建解析对象
c = configparser.ConfigParser()
c.read('atm.cfg',encoding='utf-8') #获取所有分区名称
print(c.sections()) #['atm', 'mysql', 'mysqlId'] #某个分区下所有option名字
print(c.options('mysql')) #['name', 'pwd'] #判断某个分区是否存在
print(c.has_section('mysql')) #True #判断某个选项是否存在
print(c.has_option('mysql','name')) #True # 封装了类型转换的方法
count = c.getint('atm','err_count')
# c.getboolean()
# c.getfloat()
print(count,type(count)) #3 <class 'int'> #设置某个选项的值,如果option已经存在则覆盖
c.set('atm','test','')
#添加一个新分区,如果分区存在会报错
c.add_section('atm') print(list(c.keys())) #['DEFAULT', 'atm', 'mysql', 'mysqlId']
print(list(c.values())[1].name) #atm #通过get获取里面的值
print(c.get('atm','test'))
print(c.getint('atm','err_count')) print(list(c.values())) #[<Section: DEFAULT>, <Section: atm>, <Section: mysql>, <Section: mysqlId>]
#dir 可以查看某个对象所有可用的属性 __开头不要管,系统自带的
print(dir(list(c.values())[1])) #写入数据到文件
with open('atm.cfg','wt',encoding='utf-8')as w:
c.write(w) # 创建 解析对象,读取指定的配置文件
c = configparser.ConfigParser()
c.read('atm.cfg',encoding='utf-8') # 设置某个选项的值 如果option以及存在则覆盖
c.set('atm1','aaa','') #添加
c.add_section('ATM_TEST')
c.set('ATM_TEST','WWW','HTTPS') #写入数据到文件
with open('atm.cfg','wt',encoding='utf-8')as w:
c.write(w)
#代码生成配置文件

import configparser
c = configparser.ConfigParser() c.add_section('test')
c.set('test','name','jock') with open('test.cfg','wt',encoding='utf-8')as w:
c.write(w)
'''
总结:
configparser:用来解析配置文件的
一:对配置文件有格式要求:
1,只能由分区section和选区option
2,不能有重复的section,同一个section,不能有重复的option
3,不区分数据类型,都是字符串
4,任何option都必须包含在section中 二:需要掌握的方法:
read('文件路径','编码')
get('分区名称','选项名称') 返回的是字符串
getint getfloat getboolean '''

二,subprocess模块

'''
subprocess:子进程
1,什么是进程:
指的是一个正在运行中的程序
子进程指的是由另一个进程开启的进程,a在运行过程中开启了b ,b就是a的子进程
2,为什么要开启子进程:
当一个程序在运行过程中有一个任务,自己做不了或是不想做,就可以开启另一个进程来帮助其完成任务
例如:QQ中收到一个链接,点击链接,就开启了浏览器,浏览器就是QQ的子进程 可以理解为用于执行系统指令的模块
''''' import subprocess
import os
# os.system('dir') #系统指令 '''
内存中,每个进程的内存区域是相互隔离的不能直接访问,所以需要管道来通讯
stdout = subprocess.PIPE就是指定了一个输出管道
p = subprocess.Popen('dir',shell=True,stdout=subprocess.PIPE) 从管道中读取出执行结果
result = p.stdout.read().decode('GBK')还需要设定编码格式
''' #三个管道
p1 = subprocess.Popen('dir',shell=True,stdout=subprocess.PIPE,stderr=-1)
# winds 默认是GBK,所以需要指定编码格式
print(p1.stdout.read().decode('GBK')) p2 = subprocess.Popen('disr',shell=True,stdout=subprocess.PIPE,stderr=-1)
#打印错误信息
print(p1.stderr.read().decode('GBK')) #案例:
# tasklist | findstr python #先执行tasklist 把结果交给 findstr来处理 p1 = subprocess.Popen('tasklist',shell=True,stdout=subprocess.PIPE)
p2 =subprocess.Popen('findstr python',shell=True,stdin=p1.stdout,stdout=subprocess.PIPE
,stderr=subprocess.PIPE)
#打印进程信息
print(p2.stdout.read().decode('GBK'))
print(p2.stderr.read().decode('GBK')) '''
后期项目:CMDB,需要收集服务器的信息,比如内存信息 总结:
subprocess 需要掌握的方法:
1,参数 指令
2,是否是一个指令
3,错误输出管道
4,输入管道
5,输出管道
p = subprocess.Popen('你的指令或是某个exe',shell=True,stdout=,stdin=,stderr=)
取出管道中的数据
p.stdout.read().encode()
p.stderr.read()
将输入数据写入管道,交给对方进程
p.stdin.write(p.stdout.read()) 当你需要执行系统命令时,你需要想到它
'''

三,xlrd模块

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

 exlce结构分析:

  一个excle表格包含多个sheet

  一个sheet中包含多行多列

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


import xlrd
#读取文件
workbook = xlrd.open_workbook('机密数据.xlsx')
#查看所有工作表的名称
print(workbook.sheet_names()) #['Sheet1', 'Sheet2', 'Sheet3'] #获取某个工作表,索引从0开始
sheet = workbook.sheet_by_index(1) #表格名称
print(sheet.name) #Sheet2 sheet = workbook.sheet_by_name('Sheet1')
print(sheet.name) #Sheet1 #获取某一行
row = sheet.row(2)
print(row) #[text:'张三', number:23.0, text:'男', number:180.0, empty:''] #获取单元格
cell = row[0]
#单元格的数据类型
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)) # #某个单元格的数据,索引从0开始
print(sheet.cell(0,0)) #text:'机密数据表'
print(sheet.cell(3,0)) #text:'李四' #将数据读取出来变成python的数据类型 [{},{},{}] #案例:将每个数据读取为python数据类型
#最后的列表
li = []
#先拿出所有的列名称
keys = sheet.row_values(1)
print(keys) #['姓名', '年龄', '性别', '成绩', '时间'] for i in range(2,sheet.nrows):
print(i)
row = sheet.row(i)
print(row) #[text:'张三', number:23.0, text:'男', number:180.0, text:' 2010/01/01'] #直接取出所有值
row = sheet.row_values(i)
print(row) #['张三', 23.0, '男', 180.0, ' 2010/01/01'] #创建一个空字典
dic = {}
for k in keys:
print(k)
#每次拿出一个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) #[{'姓名': '张三', '年龄': 23.0, '性别': '男', '成绩': 180.0, '生日': '2001-01-02 00:00:00'},{.....]

'''
总结:
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_value(行索引)
获取某单元格的数据
sheet.cell(行,列).value '''
常用函数:

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")
import xlwt

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

#1,创建一个工作簿
wb = xlwt.Workbook() #2,创建一个工作表
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')
#将数据写入到表格中

import xlwt
data = [{'name': '哈利波特', '代号': 1.0, 'gender': 'man', 'age': 18.0,'生日': '2001-01-01 00:00:00'},
{'name': 'owen', '代号': 748.0, 'gender': 'woman', 'age': 68.0, '生日': '1950-01-01 00:00:00'},
{'name': 'jerry', '代号': 168.0, 'gender': 'man', 'age': 18.0,'生日': '2001-01-01 00:00:00'}] #创建工作簿
wb = xlwt.Workbook() #创建工作表
sheet = wb.add_sheet('特工信息') #写入标题
sheet.write_merge(0,0,0,4,'特工信息表') #写入列名称
keys = data[0].keys()
i = 0
for k in keys:
sheet.write(1,i,k)
i += 1 #写入数据
for dic in data:
values = list(dic.values()) row_index = 2 + data.index(dic) for v in values:
sheet.write(row_index,values.index(v),v) #保存文件
wb.save('机密数据副本.xls') '''
xlwt 用于将数据写入到表格中
使用到的几个函数:
1,创建工作簿
wb = xlwt.Workbook()
2,创建工作表
sheet = wb.add_sheet('sheet名字')
3,写入数据
sheet.write(行,列,数据)
4,保存到文件
wb.save('路径') '''

configparser ,subprocess , xlrd ,xlwt 模块的更多相关文章

  1. hashlib hmac configparser subprocess xlrd xlwt

    hashlib模块:加密 import hashlib # 基本使用 cipher = hashlib.md5('需要加密的数据的二进制形式'.encode('utf-8')) print(ciphe ...

  2. Python如何读写Excel文件-使用xlrd/xlwt模块

    时间: 2020-08-18 整理: qiyuan 安装和导入 1.模块介绍 在 python 中使用 xlrd/xlwt 和 openpyxl 模块可以对Excel电子表格(xls.xlsx文件)进 ...

  3. python读写Excel文件的函数--使用xlrd/xlwt

    python中读取Excel的模块或者说工具有很多,如以下几种: Packages 文档下载 说明 openpyxl Download | Documentation | Bitbucket  The ...

  4. 自己总结python用xlrd\xlwt读写excel

    1.首先安装xlrd\xlwt模块 xlrd模块下载地址: https://pypi.python.org/pypi/xlrd xlwt模块下载地址: https://pypi.python.org/ ...

  5. 20 常用模块 hashlib hmac:加密 xml xlrd xlwt:excel读|写 configparser subprocess

    hashlib模块:加密 加密: 1.有解密的加密方式 2.无解密的加密方式:碰撞检查 hashlib -- 1)不同数据加密后的结果一定不一致 -- 2)相同数据的加密结果一定是一致的 import ...

  6. hashlib,hmac,subprocess,configparser,xlrd,xlwt,xml模块基本功能

    hashlib模块:加密 import hashlib# 基本使用cipher = hashlib.md5('需要加密的数据的二进制形式'.encode('utf-8'))print(cipher.h ...

  7. configparser模块,subprocess 模块,xlrd,xlwt ,xml 模块,面向对象

    1. configparser模块 2.subprocess 模块 3.xlrd,xlwt 4.xml 模块 5.面向对象 面向对象是什么? 是一种编程思想,指导你如何更好的编写代码 关注点在对象 具 ...

  8. Python操作Excel——win32com模块和xlrd+xlwt+xlutils组合

    今天,接到一个任务,要生成大约两百个excel文件,从2006年到2013年,每个月两个文件,这些文件中除了几个关于日期的单元格不同外,其他数据都相同,所以就想到可以用python写一个小脚本,自动生 ...

  9. Python中xlrd和xlwt模块使用方法

    本文主要介绍可操作excel文件的xlrd.xlwt模块.其中xlrd模块实现对excel文件内容读取,xlwt模块实现对excel文件的写入. 安装xlrd和xlwt模块 xlrd和xlwt模块不是 ...

随机推荐

  1. 解决wubi安装ubuntu时要下载系统映像文件问题

    转载:一个人的旅行的博客(http://www.cnblogs.com/rollenholt/articles/2607433.html) 下面我介绍解决wubi安装ubuntu时要去官网下载系统映像 ...

  2. 关于margin和padding取值为百分比和负值的总结

    以下是自己学习过程中的总结,直接上结论: 1.margin/padding取值为百分比: margin和padding四个方向上的取值为百分比都是参照父级元素的宽度来计算的. 2.margin取值为负 ...

  3. Five things that make Go fast-渣渣翻译-让GO语言更快的5个原因

    原文地址:https://dave.cheney.net/2014/06/07/five-things-that-make-go-fast 翻译放在每个小段下面 Anthony Starks has ...

  4. 两边是线 ,中间是文字 的CSS写法 而且还是自适应的

  5. Codeforces Round #410 (Div. 2) A

    Description Mike has a string s consisting of only lowercase English letters. He wants to change exa ...

  6. SpringMVC的Controller的返回值与接收的参数

    内容参考自博客: http://blog.csdn.net/u011001084/article/details/52846791 http://blog.csdn.net/xuxiaoyinliu/ ...

  7. [未读]JavaScript高效图形编程

    去年买来就一直搁置,因为是js游戏相关,暂时还用不到.

  8. javaFx 学习笔记

    1.每个javaFx程序定义在一个继承自javafx.application.Application的类中 Button:用于设置一个按钮,Button btOK = new Button(" ...

  9. BZOJ3083: 遥远的国度(树链剖分)

    题意 $n$个节点的树,每个点有权值,支持三种操作 1. 换根 2.把$x$到$y$路径上节点权值变为$z$ 3.询问路径最小值 Sol 啥?你说这是TopTree的裸题?那你写去啊 很显然,如果没有 ...

  10. Understanding Scroll Views 深入理解 scroll view 读书笔记

    Understanding Scroll Views 深入理解 scroll view  读书笔记   It may be hard to believe, but a UIScrollView is ...