python搬砖狗

导航

 

confiparser

confiparser,翻译为配置解析,很显然,他是用来解析配置文件的,

何为配置文件?

用于编写程序的配置信息的文件

何为配置信息?

为了提高程序的扩展性,我们会把一些程序中需要用到的值交给用户来确定,比如迅雷的下载目录,同时下载数,qq的提示音等等,

作为配置信息的数据 应满足两个条件

1.数据的值不是固定的

2.可以由用户来指定的

例如我们做一个登录功能,为了方便使用我们可以将用户的用户名密码写到配置文件中,可以不需要每次都输入

 

配置文件编写格式

在使用该模块前必须要先知道其配置文件的格式,由于读写文件的代码是模块封装好的,所以必须按照固定的方式来边编写,才能被正常解析, 当然并不是只有python有配置文件,其他任何语言都有,但是格式是相同的!

格式:

配置文件中只允许出现两种类型的数据

第一种 section 分区 方括号中是分区的名称 例如:[ATM ]

第二种 option 选项 名称 = 值

 

注意:

不能出现重复的分区名

同一个分区下不能有相同的选项名

值可以是任何类型 且字符串不需要加引号

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))

import configparser
#创建解析对象
c = configparser.ConfigParser()
c.read('atm.cfg',encoding='utf-8')   #读取指定的配置文件




# 获取一个配置项
count = int(c.get('atm','err_count'))
print(count)

代码生成配置文件

一般来说配置文件是由用户来进行写入,开发人员是以读取配置信息为主

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)




    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的使用

import subprocess

p = subprocess.Popen("ls",shell=True)
#shell=True 告诉系统这是一个系统指令 而不是某个文件名
#此时效果与sys.system()没有任何区别,都是将结果输出到控制台

# 那如何与这个进程交互数据呢,这需要用到三个参数
1.stdin  表示输入交给子进程的数据
2.stdout 表示子进程返回的数据
3.stderr 表示子进程发送的错误信息

#这三个参数,的类型都是管道,(管道本质就是一个文件,可以进行读写操作),使用subprocess.PIPE来获取一个管道

理解了三个参数的意义后让我们来实现一个小功能

一个子进程执行tasklist命令获取所有的任务信息,然后将结果交给另一个进程进行查找

另一个子进程执行findstr 查找某个任务信息

p1 = 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模块

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

 

posted on 2019-05-15 21:27  python搬砖狗  阅读(66)  评论(0编辑  收藏  举报