day_22常用模块之 configparser , subprocess, xlrd.xlwt

今天讲了configparser,subprocess, 还有表格的xlrd,xlwt
首先是configparser
daimport configparser

'''
configparser用来解析配置文件的,对配置文件有格式要求
只能有分区和选项
section 和option
同一个section 不能有重复的option
不能有重复的section
不区分数据类型,存进去都是字符串
# 可以用来注释
任何option都必须包含在section下
'''

#创建解析对象,
c=configparser.ConfigParser()

c.read('atm.cfg',encoding='utf-8') #读取指定的配置文件

count = c.get('atm','name') #获取某个标签下的某个配置
#c.getint(),c.getfloat(),c.getboolean()# 内部封装了类型转换

#获取所有分区名称
print(c.sections())

#某个分区下所有option名字
print(c.options('atm'))

#设置某个分区下,选项的值,如果option已经存在,则覆盖
c.set('atm','test','123')

#添加一个新分区
#c.add_section('atm2')

c.set('atm2','n','666')

#dir可以查看某个对象所有可用的属性 __开头的不要管,系统自带的
print(dir(list(c.values())))

#判断是否存在某个分区
c.has_section('atm')

#判断某个分区下是否存在某个选项
c.has_option('atm','name')

#最后打开一个文件对象,并写入文件
with open('atm.cfg','w',encoding='utf-8') as f :
c.write(f)

subprocess模块
import subprocess

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

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

subprocess可以理解为用于执行系统指令的模块
'''
#内存中每个进程的内存区域是互相隔离的不能直接访问,所以需要管道来通讯
#stdout=subprocess.PIPE就是指定了一个输出管道
p=subprocess.popen('系统指令',shell=True,stdout=subprocess.PIPE)

#stdin=subprocess.PIPE就是指定了一个输入管道
#stderr=subprocess.PIPE 是指定了一个执行错误信息输出的管道

#从输出管道中读出执行结果
p.stdout.read().decode('gbk')
#从错误输出管道中取出数据
p.stderr.read().decode('gbk')
#从将输入写入管道 交给对方进程
p.stdinwrite(' ')

表格操作之xlrd
import xlrd
#读取表格的数据
#是第三方的库,需要安装
'''
打开文件
wb
wb = xlrd.open_workbook("路径")
# 获取某个表格
'''
#打开表格并获得一个表格的对象
workbook = xlrd.open_workbook('机密数据.xlsx')

#查看所有工作表的名称
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,1)))

#获取表格的列数
print(sheet.ncols)
#获取表格的行数
print(sheet.nrows)

#获取某行的数据
sheet.row_values(3)

#获取某行的单元格个数
print(sheet.row_len(2))

#获取某个单元格的数据
print(sheet.cell(0,0).value) #前面是行,后面是列

#案例,把表格的数据取出来转为python字典
sheet=workbook.sheet_by_name('Sheet1')
#获取表格的列数
print(sheet.ncols)

#获取表格的行数
print(sheet.nrows)
print(sheet.row_len(4))

#获取表格里的页面对象
sheet = workbook.sheet_by_name('Sheet1')

print(sheet)

#获取第二行的各个分组标题
keys=sheet.row_values(1)
ls=[]
#从第三行开始循环到表格的末尾行数
for i in range(2,sheet.nrows):
value=sheet.row_values(i)
print(value)
dic={}
for k in keys:
dic.setdefault(k,value[keys.index(k)])
if k == '生日':
dic[k] = str(xlrd.xldate_as_datetime(value[keys.index(k)],0))
ls.append(dic)

print(ls)

创建表格
import xlwt
#创建表格

#创建一个工作簿
workbook=xlwt.Workbook()
#创建一个工作表
sheet = workbook.add_sheet('表格名')


# 字体对象
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)

#然后写入文件,.

#最后将工作簿写入到文件中
workbook.save('abc.xls')
 

猜你喜欢

转载自www.cnblogs.com/jixu/p/10864755.html