第二十一章 configparser、subprocess
1、
import configparser
#獲取解析器對象
config=configparser.ConfigParser()
# 讀取某個配置文件
config.read(‘a.cfg‘)
#查看所有的分區
res=config.sections() #[‘section1‘, ‘section2‘]
print(res)
#查看標題section1下所有key=value的key
options=config.options(‘section1‘)
print(options) #[‘k1‘, ‘k2‘, ‘user‘, ‘age‘, ‘is_admin‘, ‘salary‘]
#查看標題section1下所有key=value的(key,value)格式
item_list=config.items(‘section1‘)
print(item_list) #[(‘k1‘, ‘v1‘), (‘k2‘, ‘v2‘), (‘user‘, ‘egon‘), (‘age‘, ‘18‘), (‘is_admin‘, ‘true‘), (‘salary‘, ‘31‘)]
#查看標題section1下user的值=>字符串格式
val=config.get(‘section1‘,‘user‘)
print(val) #egon
#由於使用前需要進行轉換,所以模塊封裝了轉換類型的功能,只需要調用對應的函數即可,如下:
val1=config.getint(‘section1‘,‘age‘)
val2=config.getboolean(‘section1‘,‘is_admin‘)
val3=config.getfloat(‘section1‘,‘salary‘)
#是否存在某選項
print(cfg.has_option("mysql","name"))
#是否存在某分區
print(cfg.has_section("db"))
5.
import configparser
config=configparser.ConfigParser()
config.read(‘a.cfg‘,encoding=‘utf-8‘)
#刪除整個標題section2
config.remove_section(‘section2‘)
#刪除標題section1下的某個k1和k2
config.remove_option(‘section1‘,‘k1‘)
config.remove_option(‘section1‘,‘k2‘)
#判斷是否存在某個標題
print(config.has_section(‘section1‘))
#判斷標題section1下是否有user
print(config.has_option(‘section1‘,‘‘))
#添加一個標題
config.add_section(‘jack‘)
#在標題egon下添加name=egon,age=18的配置
config.set(‘jack‘,‘name‘,‘egon‘) # 如果已存則覆蓋原來的值
#config.set(‘jack‘,‘age‘,18) #報錯,必須是字符串
#最後將修改的內容寫入文件,完成最終的修改
config.write(open(‘a.cfg‘,‘w‘))
6.
import configparser
config = configparser.ConfigParser()
config.add_section("setion1")
config.set("setion1","name","zhangsn")
with open("test.config","w") as f:
config.write(f)
2、
子進程
什麽是進程
指的是一個正在運行中的程序
子進程指的是由另個一進程開啟的進程 a在運行過程中 開啟了b b就是a的子進程
為什麽要開啟子進程
當一個程序在運行過程中有一個任務,自己做不了或是不想做 就可以開啟另一個進程來幫助其完成任務
例如 qq中收到一個鏈接 點擊鏈接 就開啟了; 瀏覽器 瀏覽器就是qq的子進程
可以理解為用於執行系統指令的模塊
三個管道
p1 = subprocess.Popen("dirs",shell=True,stdout=subprocess.PIPE,stderr=-1)
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)
print(p2.stdout.read())
print(p2.stderr.read())
3、
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_values(行索引)
# 獲取某單元格的數據
sheet.cell(行,列).value
第二十一章 configparser、subprocess