一,configparser模块

  1. '''
  2. configparser模块:
  3. 是什么:
  4. 用于解析配置文件的模块
  5. 配置文件的定义:
  6. 用于编写保存某个软件或某个系统的一系列参数的文件
  7. 设置参数
  8. 为什么需要配置文件:
  9. 无论是什么样的软件应用程序,在执行过程中,都需要很多的参数
  10. 而一些参数经常会需要修改
  11. 例如:qq里面的下载路径 ATM中的错误次数
  12. 如果直接写死在程序中,使用者在需要修改参数时,就不得不直接修改源代码
  13. 这是非常不合理的,所以我们通常还会把这些需要变化的参数提取出来放到配置文件中
  14.  
  15. '''''
  16.  
  17. #打开配置文件来读取参数
  18. # with open('atm.cfg','r')as f:
  19. # err_count = int(f.read())
  20. # print(err_count,type(err_count))
  21.  
  22. import configparser
  23. #创建解析对象
  24. c = configparser.ConfigParser()
  25. c.read('atm.cfg',encoding='utf-8') #读取指定的配置文件
  26.  
  27. #获取一个配置项
  28. count = int(c.get('atm','err_count'))
  29. print(int(count))
  30. print(type(count))
  31.  
  32. temp_count = 0
  33. while True:
  34. if temp_count >= count:
  35. print('该账号已经被锁定')
  36. break
  37. name = input('name:')
  38. pwd = input('pwd:')
  39. if name == 'owen' and pwd == '':
  40. print('登录成功')
  41. break
  42. else:
  43. print('账号或密码不正确!')
  44. temp_count += 1
  1. import configparser
  2.  
  3. # 创建解析对象
  4. c = configparser.ConfigParser()
  5. c.read('atm.cfg',encoding='utf-8')
  6.  
  7. #获取所有分区名称
  8. print(c.sections()) #['atm', 'mysql', 'mysqlId']
  9.  
  10. #某个分区下所有option名字
  11. print(c.options('mysql')) #['name', 'pwd']
  12.  
  13. #判断某个分区是否存在
  14. print(c.has_section('mysql')) #True
  15.  
  16. #判断某个选项是否存在
  17. print(c.has_option('mysql','name')) #True
  18.  
  19. # 封装了类型转换的方法
  20. count = c.getint('atm','err_count')
  21. # c.getboolean()
  22. # c.getfloat()
  23. print(count,type(count)) #3 <class 'int'>
  24.  
  25. #设置某个选项的值,如果option已经存在则覆盖
  26. c.set('atm','test','')
  27. #添加一个新分区,如果分区存在会报错
  28. c.add_section('atm')
  29.  
  30. print(list(c.keys())) #['DEFAULT', 'atm', 'mysql', 'mysqlId']
  31. print(list(c.values())[1].name) #atm
  32.  
  33. #通过get获取里面的值
  34. print(c.get('atm','test'))
  35. print(c.getint('atm','err_count'))
  36.  
  37. print(list(c.values())) #[<Section: DEFAULT>, <Section: atm>, <Section: mysql>, <Section: mysqlId>]
  38. #dir 可以查看某个对象所有可用的属性 __开头不要管,系统自带的
  39. print(dir(list(c.values())[1]))
  40.  
  41. #写入数据到文件
  42. with open('atm.cfg','wt',encoding='utf-8')as w:
  43. c.write(w)
  44.  
  45. # 创建 解析对象,读取指定的配置文件
  46. c = configparser.ConfigParser()
  47. c.read('atm.cfg',encoding='utf-8')
  48.  
  49. # 设置某个选项的值 如果option以及存在则覆盖
  50. c.set('atm1','aaa','')
  51.  
  52. #添加
  53. c.add_section('ATM_TEST')
  54. c.set('ATM_TEST','WWW','HTTPS')
  55.  
  56. #写入数据到文件
  57. with open('atm.cfg','wt',encoding='utf-8')as w:
  58. c.write(w)
  1. #代码生成配置文件
  2.  
  3. import configparser
  4. c = configparser.ConfigParser()
  5.  
  6. c.add_section('test')
  7. c.set('test','name','jock')
  8.  
  9. with open('test.cfg','wt',encoding='utf-8')as w:
  10. c.write(w)
  1. '''
  2. 总结:
  3. configparser:用来解析配置文件的
  4. 一:对配置文件有格式要求:
  5. 1,只能由分区section和选区option
  6. 2,不能有重复的section,同一个section,不能有重复的option
  7. 3,不区分数据类型,都是字符串
  8. 4,任何option都必须包含在section中
  9.  
  10. 二:需要掌握的方法:
  11. read('文件路径','编码')
  12. get('分区名称','选项名称') 返回的是字符串
  13. getint getfloat getboolean
  14.  
  15. '''

二,subprocess模块

  1. '''
  2. subprocess:子进程
  3. 1,什么是进程:
  4. 指的是一个正在运行中的程序
  5. 子进程指的是由另一个进程开启的进程,a在运行过程中开启了b ,b就是a的子进程
  6. 2,为什么要开启子进程:
  7. 当一个程序在运行过程中有一个任务,自己做不了或是不想做,就可以开启另一个进程来帮助其完成任务
  8. 例如:QQ中收到一个链接,点击链接,就开启了浏览器,浏览器就是QQ的子进程
  9.  
  10. 可以理解为用于执行系统指令的模块
  11. '''''
  12.  
  13. import subprocess
  14. import os
  15. # os.system('dir') #系统指令
  16.  
  17. '''
  18. 内存中,每个进程的内存区域是相互隔离的不能直接访问,所以需要管道来通讯
  19. stdout = subprocess.PIPE就是指定了一个输出管道
  20. p = subprocess.Popen('dir',shell=True,stdout=subprocess.PIPE) 从管道中读取出执行结果
  21. result = p.stdout.read().decode('GBK')还需要设定编码格式
  22. '''
  23.  
  24. #三个管道
  25. p1 = subprocess.Popen('dir',shell=True,stdout=subprocess.PIPE,stderr=-1)
  26. # winds 默认是GBK,所以需要指定编码格式
  27. print(p1.stdout.read().decode('GBK'))
  28.  
  29. p2 = subprocess.Popen('disr',shell=True,stdout=subprocess.PIPE,stderr=-1)
  30. #打印错误信息
  31. print(p1.stderr.read().decode('GBK'))
  32.  
  33. #案例:
  34. # tasklist | findstr python #先执行tasklist 把结果交给 findstr来处理
  35.  
  36. p1 = subprocess.Popen('tasklist',shell=True,stdout=subprocess.PIPE)
  37. p2 =subprocess.Popen('findstr python',shell=True,stdin=p1.stdout,stdout=subprocess.PIPE
  38. ,stderr=subprocess.PIPE)
  39. #打印进程信息
  40. print(p2.stdout.read().decode('GBK'))
  41. print(p2.stderr.read().decode('GBK'))
  42.  
  43. '''
  44. 后期项目:CMDB,需要收集服务器的信息,比如内存信息
  45.  
  46. 总结:
  47. subprocess 需要掌握的方法:
  48. 1,参数 指令
  49. 2,是否是一个指令
  50. 3,错误输出管道
  51. 4,输入管道
  52. 5,输出管道
  53. p = subprocess.Popen('你的指令或是某个exe',shell=True,stdout=,stdin=,stderr=)
  54. 取出管道中的数据
  55. p.stdout.read().encode()
  56. p.stderr.read()
  57. 将输入数据写入管道,交给对方进程
  58. p.stdin.write(p.stdout.read())
  59.  
  60. 当你需要执行系统命令时,你需要想到它
  61. '''

三,xlrd模块

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

 exlce结构分析:

  一个excle表格包含多个sheet

  一个sheet中包含多行多列

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

  1.  
  2. import xlrd
  3. #读取文件
  4. workbook = xlrd.open_workbook('机密数据.xlsx')
  5. #查看所有工作表的名称
  6. print(workbook.sheet_names()) #['Sheet1', 'Sheet2', 'Sheet3']
  7.  
  8. #获取某个工作表,索引从0开始
  9. sheet = workbook.sheet_by_index(1)
  10.  
  11. #表格名称
  12. print(sheet.name) #Sheet2
  13.  
  14. sheet = workbook.sheet_by_name('Sheet1')
  15. print(sheet.name) #Sheet1
  16.  
  17. #获取某一行
  18. row = sheet.row(2)
  19. print(row) #[text:'张三', number:23.0, text:'男', number:180.0, empty:'']
  20.  
  21. #获取单元格
  22. cell = row[0]
  23. #单元格的数据类型
  24. print(cell.ctype) #
  25. #单元格的数据
  26. print(cell.value) #张三
  27.  
  28. #转换日期类型
  29. print(str(xlrd.xldate_as_datetime(cell.value,0)))
  30.  
  31. #获取表格的列数
  32. print(sheet.ncols) #
  33. #获取表格的行数
  34. print(sheet.nrows) #
  35.  
  36. #获取第一行的单元格的个数
  37. print(sheet.row_len(1)) #
  38.  
  39. #某个单元格的数据,索引从0开始
  40. print(sheet.cell(0,0)) #text:'机密数据表'
  41. print(sheet.cell(3,0)) #text:'李四'
  42.  
  43. #将数据读取出来变成python的数据类型 [{},{},{}]
  44.  
  45. #案例:将每个数据读取为python数据类型
  46. #最后的列表
  47. li = []
  48. #先拿出所有的列名称
  49. keys = sheet.row_values(1)
  50. print(keys) #['姓名', '年龄', '性别', '成绩', '时间']
  51.  
  52. for i in range(2,sheet.nrows):
  53. print(i)
  54. row = sheet.row(i)
  55. print(row) #[text:'张三', number:23.0, text:'男', number:180.0, text:' 2010/01/01']
  56.  
  57. #直接取出所有值
  58. row = sheet.row_values(i)
  59. print(row) #['张三', 23.0, '男', 180.0, ' 2010/01/01']
  60.  
  61. #创建一个空字典
  62. dic = {}
  63. for k in keys:
  64. print(k)
  65. #每次拿出一个key 与一个value --对应
  66. dic[k] = row[keys.index(k)]
  67. if k == '生日':
  68. #如果是生日字段,需要转换时间类型
  69. dic[k] = str(xlrd.xldate_as_datetime(row[keys.index(k)],0))
  70. li.append(dic)
  71. print(li) #[{'姓名': '张三', '年龄': 23.0, '性别': '男', '成绩': 180.0, '生日': '2001-01-02 00:00:00'},{.....]

  72. '''
  73. 总结:
  74. xlrd 模块是用于读取表格数据的
  75. xlrd 是一个第三方的需要自己安装,可以在终端: pip install xlrd
  76.  
  77. 打开文件:
  78. wb wb = xlrd.open_workbook('文件路径')
  79. 获取路径:
  80. sheet = wb.sheet_by_name()
  81. sheet = wb.sheet_by_index()
  82. 获取行数:
  83. sheet.nrows()
  84. 获取列数:
  85. sheet.ncols()
  86. 取某行数据
  87. sheet.row_value(行索引)
  88. 获取某单元格的数据
  89. sheet.cell(行,列).value
  90.  
  91. '''
  1. 常用函数:
  2.  
  3. import xlrd
  4.  
  5. # 读取文件
  6. work_book = xlrd.open_workbook("/Users/jerry/Desktop/公司机密数据.xlsx")
  7. # 选取一个表
  8.  
  9. # 获取所有所有表格名称
  10. print(work_book.sheet_names())
  11.  
  12. # 选择第2个 索引从0开始
  13. sheet = work_book.sheet_by_index(1)
  14.  
  15. # 表格名称
  16. print(sheet.name)
  17.  
  18. # 行数
  19. print(sheet.nrows)
  20. # 列数
  21. print(sheet.ncols)
  22.  
  23. #批量读取行数据
  24. # 取出第6行的全部内容包含数据类型
  25. print(sheet.row(6))
  26. # 取出第6行的内容包含数据类型 从第3列开始获取
  27. print(sheet.row_slice(6,start_colx=3))
  28.  
  29. # 取出第6行的内容包含数据类型 从第3列开始获取
  30. print(sheet.row_slice(6,start_colx=4,end_colx=5))
  31.  
  32. # 获取该行所有数据类型 一数字表示
  33. # print(sheet.row_types(6))
  34. # print(sheet.row_values(6))
  35.  
  36. # 单元格的处理
  37. print(sheet.cell(0,0).value) # 取值
  38. print(sheet.cell(0,0).ctype) # 取类型
  39. print(sheet.cell_value(2,0)) # 直接取值
  40.  
  41. print(sheet.row(0)[0]) # 先取行再取单元格
  42. print(sheet.col(0)) # 第0列所有数据
  43. print(sheet.col(0)) # 先取列再取单元格
  44.  
  45. print(sheet.cell_type(0,0))
  46.  
  47. # 单元格位置转换
  48. print(xlrd.cellname(2,1))
  49. print(xlrd.cellnameabs(0,2))
  50. print(xlrd.colname(5))
  51.  
  52. # 时间类型转换
  53. # print(sheet.cell(6,5).value)
  54. # print(xlrd.xldate_as_datetime(sheet.cell(6,5).value,1))

四,xlwt模块

  1. python中一个第三方的用于写入excle数据到表格的模块
  2.  
  3. ​用代码来编写exlce是非常低效的 所以该模块了解即可。
  4.  
  5. import xlwt
  6. # 创建工作簿
  7. work = xlwt.Workbook()
  8. # 创建一个表
  9. sheet = work.add_sheet("员工信息数据")
  10.  
  11. #创建一个字体对象
  12. font = xlwt.Font()
  13. font.name = "Times New Roman" # 字体名称
  14. font.bold = True # 加粗
  15. font.italic = True # 斜体
  16. font.underline = True # 下划线
  17.  
  18. #创建一个样式对象
  19. style = xlwt.XFStyle()
  20. style.font = font
  21.  
  22. # 写入标题
  23. for k in keys:
  24. sheet.write(0,keys.index(k),k,style)
  25.  
  26. # 写入数据
  27. for i in infos:
  28. for k in keys:
  29. sheet.write(1 + infos.index(i),keys.index(k),label = i[k])
  30. # 保存至文件
  31. work.save("test.xls")
  1. import xlwt
  2.  
  3. #xlwt 是第三方用于生成一个Exel表格
  4.  
  5. #1,创建一个工作簿
  6. wb = xlwt.Workbook()
  7.  
  8. #2,创建一个工作表
  9. sheet = wb.add_sheet('特工信息') #type:xlwt.Worksheet
  10.  
  11. #字体对象
  12. font = xlwt.Font()
  13. font.bold = True
  14.  
  15. #style样式对象
  16. style = xlwt.XFStyle()
  17. style.font = font #将字体设置到样式中
  18.  
  19. #写入数据
  20. # sheet.write(0,0,'这是标题')
  21. #写入并合并单元格
  22. sheet.write_merge(0,0,0,4,'这是标题',style)
  23.  
  24. #将工作簿写入到文件
  25. wb.save('abc.xls')
  1. #将数据写入到表格中
  2.  
  3. import xlwt
  4. data = [{'name': '哈利波特', '代号': 1.0, 'gender': 'man', 'age': 18.0,'生日': '2001-01-01 00:00:00'},
  5. {'name': 'owen', '代号': 748.0, 'gender': 'woman', 'age': 68.0, '生日': '1950-01-01 00:00:00'},
  6. {'name': 'jerry', '代号': 168.0, 'gender': 'man', 'age': 18.0,'生日': '2001-01-01 00:00:00'}]
  7.  
  8. #创建工作簿
  9. wb = xlwt.Workbook()
  10.  
  11. #创建工作表
  12. sheet = wb.add_sheet('特工信息')
  13.  
  14. #写入标题
  15. sheet.write_merge(0,0,0,4,'特工信息表')
  16.  
  17. #写入列名称
  18. keys = data[0].keys()
  19. i = 0
  20. for k in keys:
  21. sheet.write(1,i,k)
  22. i += 1
  23.  
  24. #写入数据
  25. for dic in data:
  26. values = list(dic.values())
  27.  
  28. row_index = 2 + data.index(dic)
  29.  
  30. for v in values:
  31. sheet.write(row_index,values.index(v),v)
  32.  
  33. #保存文件
  34. wb.save('机密数据副本.xls')
  35.  
  36. '''
  37. xlwt 用于将数据写入到表格中
  38. 使用到的几个函数:
  39. 1,创建工作簿
  40. wb = xlwt.Workbook()
  41. 2,创建工作表
  42. sheet = wb.add_sheet('sheet名字')
  43. 3,写入数据
  44. sheet.write(行,列,数据)
  45. 4,保存到文件
  46. wb.save('路径')
  47.  
  48. '''

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. LuoguP1268树的重量【构造/思维】By cellur925

    题目传送门 Description 给你一个矩阵$M$,$M(i,j)$表示$i$到$j$的最短距离.定义树的重量为树上各边权之和,对于任意给出的合法矩阵$M$,已知它所能表示树的重量是唯一确定的.给 ...

  2. elasticsearch 查询 query

    对于 类型是 text的字段,并且分析器指明是ik_max_word的会建立倒排索引 查询的分类: match查询:  会自动转换大小写,会分词, term查询: 不会转换和分词,只能值匹配 term ...

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

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

  4. Nginx的location配置概述【转】

    语法规则: location [=|~|~*|^~] /uri/ { … } = 开头表示精确匹配^~ 开头表示uri以某个常规字符串开头,理解为匹配url路径即可.nginx不对url做编码,因此请 ...

  5. 目标&计划

    目标 感觉起来NOIP还是能考到一个比较好的分数的吧 550+? 现在可能还不大行,但是过3个月或许还是能考到的 所以先订下NOIP保底500争取550+吧 至于省选... 前面有一群巨佬挡着,感觉想 ...

  6. Educational Codeforces Round 19 C

    Description Petya recieved a gift of a string s with length up to 105 characters for his birthday. H ...

  7. JavaScript入门2

    5.document对象:Document对象是window对象的一个对象属性,代表浏览器窗口中装载的整个HTML文档.文档中的每个HTML元素对应着JavaScript对象. 因为document代 ...

  8. 3个解析url的php函数

    通过url进行传值,是php中一个传值的重要手段.所以我们要经常对url里面所带的参数进行解析,如果我们知道了url传递参数名称,例如 /index.php?name=tank&sex=1#t ...

  9. input标签属性

    很多时候,我们都用到了很多标签实现输入功能,所以在这里梳理一下. 1.建立一个文本框 <input type="text" name="userName" ...

  10. mysql5.7.25集群部署和方案设计(附PXC一键部署脚本)

    还记得我们之前部署mysql集群有多麻烦嘛?波哥来救你们啦!~ 我已将项目上传到了我的github仓库中,大家可以点击仓库地址出现的连接登录查看相应的代码!如果觉得不错别忘了转发.点赞哦! 部署步骤: ...