盤點(diǎn)一個Python自動化辦公實(shí)戰(zhàn)實(shí)現(xiàn)數(shù)據(jù)匯總填充(方法一)
回復(fù)“書籍”即可獲贈Python從入門到進(jìn)階共10本電子書
大家好,我是皮皮。
一、前言
前幾天在Python最強(qiáng)王者交流群【哎呦喂 是豆子~】問了一個Python自動化辦公的問題,一起來看看吧。
下圖是他的原始數(shù)據(jù)和他想得到的目標(biāo)數(shù)據(jù),如下所示:
需要在標(biāo)黃的兩行里邊進(jìn)行相關(guān)操作。
二、實(shí)現(xiàn)過程
這里【莫生氣】和【Ineverleft】、【吳超建】給了一個指導(dǎo),主要涉及的是Excel的數(shù)據(jù)透視表和篩選功能。【鶏啊鶏。】提出使用Pandas進(jìn)行實(shí)現(xiàn),可能也有點(diǎn)復(fù)雜。不過粉絲個人更傾向于弄成下代碼的,使用python實(shí)現(xiàn),畢竟數(shù)據(jù)表里面量有點(diǎn)大。
下面【莫生氣】給了一個Python實(shí)現(xiàn),使用openpyxl進(jìn)行實(shí)現(xiàn)。代碼如下:
import openpyxl
# 打開Excel文件
workbook = openpyxl.load_workbook('測試.xlsx')
sheet = workbook.active
# 初始化IP地址列表,已提供誤報證明ip
ip_list1 = []
# 初始化IP地址列表,已提供無法整改證明ip
ip_list2 = []
# 初始化IP地址列表,沒有誤報和無法整改證明的IP
ip_list3 = []
is_provided_misreport_list = []
is_provided_fixed_prove_list = []
# 遍歷每一行
for row in range(2, sheet.max_row + 1):
system_name = sheet.cell(row=row, column=1).value
vulnerability_name = sheet.cell(row=row, column=2).value
ip = sheet.cell(row=row, column=3).value
is_provided_misreport = sheet.cell(row=row, column=4).value
is_provided_fixed_prove = sheet.cell(row=row, column=5).value
# 判斷漏洞名稱和是否提供誤報證明,針對OpenSSH 'schnorr.c'遠(yuǎn)程內(nèi)存破壞漏洞(CVE-2014-1692)漏洞
if vulnerability_name == "OpenSSH 'schnorr.c'遠(yuǎn)程內(nèi)存破壞漏洞(CVE-2014-1692)" and is_provided_misreport == '是':
is_provided_misreport_list.append(is_provided_misreport)
ip_list1.append(ip)
if vulnerability_name == "OpenSSH 'schnorr.c'遠(yuǎn)程內(nèi)存破壞漏洞(CVE-2014-1692)" and is_provided_fixed_prove == '是':
is_provided_fixed_prove_list.append(is_provided_fixed_prove)
ip_list2.append(ip)
if vulnerability_name == "OpenSSH 'schnorr.c'遠(yuǎn)程內(nèi)存破壞漏洞(CVE-2014-1692)" and is_provided_misreport == '否' and is_provided_fixed_prove == '否':
# sheet.cell(row=15, column=7).value = '無'
ip_list3.append(ip)
# 判斷漏洞名稱和是否提供誤報證明
if vulnerability_name == "OpenSSH 'x11_open_helper()'函數(shù)安全限制繞過漏洞(CVE-2015-5352)" and is_provided_misreport == '否':
sheet.cell(row=3, column=16).value = '是'
else:
sheet.cell(row=3, column=16).value = '否'
# 填寫C15單元格
if '是' in is_provided_misreport_list:
sheet.cell(row=15, column=3).value = '是'
else:
sheet.cell(row=15, column=3).value = '否'
# 填寫D15單元格
sheet.cell(row=15, column=4).value = ','.join(ip_list1)
# 填寫E15單元格
if '是' in is_provided_fixed_prove_list:
sheet.cell(row=15, column=5).value = '是'
else:
sheet.cell(row=15, column=5).value = '否'
# 填寫F15單元格
sheet.cell(row=15, column=6).value = ','.join(ip_list2)
# 填寫G15單元格
sheet.cell(row=15, column=8).value = ','.join(ip_list3)
# 保存修改后的Excel文件
workbook.save('updated_excel_file.xlsx')
不過這里只是處理了15行的內(nèi)容,16行的內(nèi)容沒有處理。你可以嘗試下封裝,這樣的話后面有其他漏洞情況的話,也可以方便修改。下一篇文章我們一起來看封裝好的代碼,更加的健壯性。
三、總結(jié)
大家好,我是皮皮。這篇文章主要盤點(diǎn)了一個Python自動化辦公的問題,文中針對該問題,給出了具體的解析和代碼實(shí)現(xiàn),幫助粉絲順利解決了問題。
最后感謝粉絲【哎呦喂 是豆子~】提問,感謝【莫生氣】、【隔壁??山楂】給出的思路和代碼解析,感謝【鶏啊鶏。】、【Ineverleft】等人參與學(xué)習(xí)交流。
【提問補(bǔ)充】溫馨提示,大家在群里提問的時候。可以注意下面幾點(diǎn):如果涉及到大文件數(shù)據(jù),可以數(shù)據(jù)脫敏后,發(fā)點(diǎn)demo數(shù)據(jù)來(小文件的意思),然后貼點(diǎn)代碼(可以復(fù)制的那種),記得發(fā)報錯截圖(截全)。代碼不多的話,直接發(fā)代碼文字即可,代碼超過50行這樣的話,發(fā)個.py文件就行。
大家在學(xué)習(xí)過程中如果有遇到問題,歡迎隨時聯(lián)系我解決(我的微信:pdcfighting1),應(yīng)粉絲要求,我創(chuàng)建了一些ChatGPT機(jī)器人交流群和高質(zhì)量的Python付費(fèi)學(xué)習(xí)交流群和付費(fèi)接單群,歡迎大家加入我的Python學(xué)習(xí)交流群和接單群!
小伙伴們,快快用實(shí)踐一下吧!如果在學(xué)習(xí)過程中,有遇到任何問題,歡迎加我好友,我拉你進(jìn)Python學(xué)習(xí)交流群共同探討學(xué)習(xí)。
------------------- End -------------------
往期精彩文章推薦:
歡迎大家點(diǎn)贊,留言,轉(zhuǎn)發(fā),轉(zhuǎn)載,感謝大家的相伴與支持
想加入Python學(xué)習(xí)群請在后臺回復(fù)【入群】
萬水千山總是情,點(diǎn)個【在看】行不行
/今日留言主題/
隨便說一兩句吧~~
