Python Day22:Configparse、Subprocess、Xlrd、Xlwt模块

## configparser模块

~~~python
用于解析配置文件的模块:
    应用程序/软件,在执行过程中,都需要很多参数,(如qq的下载路径/记住密码功能),很多都会需要修改,不能写死在程序中,所以我们会把这些需要变化的参数放到配置文件放到配置文件中.configparser模块就是来方便解析这些文件的.
不用configparser模块来解析也可以读取配置文件:
    例:with open("targetfile","r",encoding="utf-8")as fr:
            count=f.read()
            ``````(将文件转换成目标类型\格式)``````
上方法比较繁琐```
configparser:
    import configparser#导入模块
    #创建解析对象
    c=configparser.ConfigParser()
    #对象读取配置文件---->(将内容读取到内存?)
    c.read("targetfile",encoding="utf-8")
    #获取配置文件的具体配置项section->option
    count=c.get("section","option")
    print(count)\print(type(count)
#注意事项:
       配置文件格式要求:
        必须有section |option,且option必须包含在section中
          不能有重复section,同一个section不能有重复option
        不区分数据类型,都是字符串不需要额外加""
        可以用#来注释
 #常用方法: 
 #获取所有分区名称:c.sections()
 #获取某个分区所有option:c.options("section")
 #封装类型转换方式:getint() |getfloat() |getboolean()
 #添加一个新分区:c.add_section("section")
 #添加\覆盖分区内某个选项:c.set("section","option","值")
添加\覆盖等写入操作,需要配合with open 来写入,否则无法写入
    with open("test.cfg","wt",encoding="utf-8") as f:
        c.write(f)#c.write("文件对象,并非路径!")
                  #read("文件名\文件路径")
  #configparser模块,读写配置文件时,都是读写内存信息,然后保存在内存中,写的时候,必须在配合withopen来打开操作系统的文件.
~~~

## subprocess模块

```python
子进程:由另一个进程开启的进程.a在运行过程中开启了b,不就是a的子进程.
为什么开启子进程,一个程序在运行过程中,有任务自己做不了或不想做,就可以开启另一个进程来帮助完成任务
#在内存中每个进程的内存区域都是互相隔离的,不能直接访问,所以需要管道来通讯
#python中有三个管道:stdout,stderr,stdin
#stdout=subprocess.PIPE就是指定了一个输出管道
#p=subprocess.Popen("dir",shell=True,stdout=sbuprocess.PIPE)
#从管道中读取执行结果:result=p.stdout.read().decode("GBK")
p1=subprocess.Popen("dirs",shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
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)
#Popen方法,用来打开指令,进入子进程
print(p2.stdout.read())
print(p2.stderr.read())

p = subprocess.Popen("你的指令或是某个exe",shell=True,stderr=,stdin=,stdout=)
# 将输入写入管道 交给对方进程
# p.stdin.write(p.stdout.read())
当需要执行系统指令时 需要想起它!
```

## xlrd模块

```python
#读取Excel表格信息的模块.
#创建读取表格对象
workbook=xlrd.open_workbook("表格数据.xls"\文件路径)
#获取表格文件的某个工作表sheet
sheet=workbook.sheet_by_name("工作表名")
sheet = wb.sheet_by_index("索引值")
#表下面的方法:
    n=sheet.nrows#获取表的行数
    n=sheet.ncols#获取表的列数
    rown=sheet.row(n)#获取某一行的所有数据
    values=sheet.row_values(n)#获取某一行的说有数据的值,返回一个列表
    sheet.row_len(n)#获取某一行的单元格个数
    sheet.cell("行数","列数")#获取具体单元格数据
    cell.value#单元格的值
   获取的单元格数据如下: 
  [text:'姓名', text:'年龄', text:'性别', text:'籍贯'] 
    
    
    
```

## xlwt模块

```python
用于生成一个表格,并对表格进行数据写入(很少用到,了解)
#创建表格对象
we=xlwt.Workbook()
#创建工作表对象
sheet=we.add_sheet("输入内容")
# 字体对象
font = xlwt.Font()
font.bold = True
# style样式对象
style = xlwt.XFStyle()
style.font = font # 将字体设置到样式中


#写入数据:
sheet.write(行数,列数 ,"输入内容")
#写入并合并单元格
sheet.write_merge(起始行,结束行,起始列,结束列,"输入内容",style)
#将工作薄写入到文件
we.save("abc.xls")
```

猜你喜欢

转载自www.cnblogs.com/huhongpeng/p/10922790.html