引言
1、Python處理Excel數據
2、Python處理PDF文本
3、Python處理Email
4、Python處理數據庫
5、Python處理批量文件
6、Python控制鼠標
7、Python控制鍵盤
8、Python壓縮文件
9、Python爬取網絡數據
10、Python處理圖片圖表
小結
引言知乎上有個熱門問題,Python 未來會成為大眾辦公常用編程工具嗎?
在編程世界裡,Python已經是名副其實的網紅了。曾經一個學漢語言的研究生,問我怎麼學Python,因為他們課程論文裡需要用到文本分析,用Python來跑數據。我和他說,你看兩天語法,就可以上手開干,不會的再查資料。後來這位同學半個月就用Python把論文數據搞好了。
所以Python最大優勢在於容易學,門檻比Java、C++低非常多,給非程序員群體提供了用代碼干活的可能性。當然Python能成為大眾編程工具,不光光是因為易學,還因為Python有成千上萬的工具包,遍布各行各業。
舉10幾個辦公自動化常見的例子,Python都能高效處理。
1、Python處理Excel數據可以使用pandas、xlwings、openpyxl等包來對Excel進行增刪改查、格式調整等操作,甚至可以使用Python函數來對excel數據進行分析。
讀取excel表格
import xlwings as xwwb = xw.Book() # this will create a new workbookwb = xw.Book('FileName.xlsx') # connect to a file that is open or in the current working directorywb = xw.Book(r'C:\path\to\file.xlsx') # on Windows: use raw strings to escape backslashes
將matplotlib繪圖寫入excel表格
import matplotlib.pyplot as pltimport xlwings as xwfig = plt.figure()plt.plot([1, 2, 3])sheet = xw.Book().sheets[0]sheet.pictures.add(fig, name='MyPlot', update=True)
2、Python處理PDF文本PDF幾乎是最常見的文本格式,很多人有各種處理PDF的需求,比如制作PDF、獲取文本、獲取圖片、獲取表格等。Python中有PyPDF、pdfplumber、ReportLab、PyMuPDF等包可以輕松實現這些需求。
提取PDF文字
import PyPDF2pdfFile = open('example.pdf','rb')pdfReader = PyPDF2.PdfFileReader(pdfFile)print(pdfReader.numPages)page = pdfReader.getPage(0)print(page.extractText())pdfFile.close()
提取PDF表格
# 提取pdf表格import pdfplumberwith pdfplumber.open("example.pdf") as pdf: page01 = pdf.pages[0] #指定頁碼 table1 = page01.extract_table()#提取單個表格 # table2 = page01.extract_tables()#提取多個表格 print(table1)
3、Python處理Email在Python中可以使用smtplib配合email庫,來實現郵件的自動化傳輸,非常方便。
import smtplibimport email# 負責將多個對象集合起來from email.mime.multipart import MIMEMultipartfrom email.header import Header# SMTP服務器,這裡使用163郵箱mail_host = "smtp.163.com"# 發件人郵箱mail_sender = "******@163.com"# 郵箱授權碼,注意這裡不是郵箱密碼,如何獲取郵箱授權碼,請看本文最後教程mail_license = "********"# 收件人郵箱,可以為多個收件人mail_receivers = ["******@qq.com","******@outlook.com"]mm = MIMEMultipart('related')# 郵件正文內容body_content = """你好,這是一個測試郵件!"""# 構造文本,參數1:正文內容,參數2:文本格式,參數3:編碼方式message_text = MIMEText(body_content,"plain","utf-8")# 向MIMEMultipart對象中添加文本對象mm.attach(message_text)# 創建SMTP對象stp = smtplib.SMTP()# 設置發件人郵箱的域名和端口,端口地址為25stp.connect(mail_host, 25) # set_debuglevel(1)可以打印出和SMTP服務器交互的所有信息stp.set_debuglevel(1)# 登錄郵箱,傳遞參數1:郵箱地址,參數2:郵箱授權碼stp.login(mail_sender,mail_license)# 發送郵件,傳遞參數1:發件人郵箱地址,參數2:收件人郵箱地址,參數3:把郵件內容格式改為strstp.sendmail(mail_sender, mail_receivers, mm.as_string())print("郵件發送成功")# 關閉SMTP對象stp.quit()
4、Python處理數據庫數據庫是我們常用的辦公應用,Python中有各種數據庫驅動接口包,支持對數據庫的增刪改查、運維管理工作。比如說pymysql包對應MySQL、psycopg2包對應PostgreSQL、pymssql包對應sqlserver、cxoracle包對應Oracle、PyMongo包對應MongoDB等等。
對MySQL的連接查詢
import pymysql# 打開數據庫連接db = pymysql.connect(host='localhost', user='testuser', password='test123', database='TESTDB') # 使用 cursor() 方法創建一個游標對象 cursorcursor = db.cursor()# 使用 execute() 方法執行 SQL 查詢 cursor.execute("SELECT VERSION()")# 使用 fetchone() 方法獲取單條數據.data = cursor.fetchone()print ("Database version : %s " % data)# 關閉數據庫連接db.close()
5、Python處理批量文件對很多辦公場景來說,批量處理文件一直是個髒活累活,Python可以幫你脫離苦海。Python中有很多處理系統文件的包,比如sys、os、shutil、glob、path.py等等。
批量刪除不同文件夾下的同名文件夾
import os,shutilimport sysimport numpy as npdef arrange_file(dir_path0): for dirpath,dirnames,filenames in os.walk(dir_path0): if 'my_result' in dirpath: # print(dirpath) shutil.rmtree(dirpath)
批量修改文件後綴名
import osdef file_rename(): path = input("請輸入你需要修改的目錄(格式如'F:\\test'):") old_suffix = input('請輸入你需要修改的後綴(需要加點.):') new_suffix = input('請輸入你要改成的後綴(需要加點.):') file_list = os.listdir(path) for file in file_list: old_dir = os.path.join(path, file) print('當前文件:', file) if os.path.isdir(old_dir): continue if old_suffix != os.path.splitext(file)[1]: continue filename = os.path.splitext(file)[0] new_dir = os.path.join(path, filename + new_suffix) os.rename(old_dir, new_dir)if __name__ == '__main__': file_rename()
6、Python控制鼠標這是很多人的需求,實現對鼠標的自動控制,去做一些流水線的工作,比如軟件測試。
Python有個pyautogui庫可以任意地去控制你的鼠標。
控制鼠標左擊/右擊/雙擊函數以及測試源碼
# 獲取鼠標位置import pyautogui as pgtry: while True: x, y = pg.position() print(str(x) + " " + str(y)) #輸出鼠標位置 if 1746 < x < 1800 and 2 < y < 33: pg.click()#左鍵單擊 if 1200 < x < 1270 and 600 < y < 620: pg.click(button='right')#右鍵單擊 if 1646 < x < 1700 and 2 < y < 33: pg.doubleClick()#左鍵雙擊except KeyboardInterrupt: print("\n")
7、Python控制鍵盤同樣的,Python也可以通過pyautogui控制鍵盤。
鍵盤寫入
import pyautogui#typewrite()無法輸入中文內容,中英文混合的只能輸入英文#interval設置文本輸入速度,默認值為0pyautogui.typewrite('你好,world!',interval=0.5)
8、Python壓縮文件壓縮文件是辦公中常見的操作,一般壓縮會使用壓縮軟件,需要手動操作。
Python中有很多包支持文件壓縮,可以讓你自動化壓縮或者解壓縮本地文件,或者將內存中的分析結果進行打包。比如zipfile、zlib、tarfile等可以實現對.zip、.rar、.7z等壓縮文件格式的操作。
壓縮文件
import zipfiletry: with zipfile.ZipFile("c://test.zip",mode="w") as f: f.write("c://test.txt") #寫入壓縮文件,會把壓縮文件中的原有覆蓋except Exception as e: print("異常對象的類型是:%s"%type(e)) print("異常對象的內容是:%s"%e)finally: f.close()
解壓文件
import zipfiletry: with zipfile.ZipFile("c://test.zip",mode="a") as f: f.extractall("c://",pwd=b"root") ##將文件解壓到指定目錄,解壓密碼為rootexcept Exception as e: print("異常對象的類型是:%s"%type(e)) print("異常對象的內容是:%s"%e)finally: f.close()
9、Python爬取網絡數據python爬蟲應該是最受歡迎的功能,也是廣大Python愛好者們入坑的主要的原因。
Python中有非常多的包支持爬蟲,而爬蟲包又分為抓取、解析兩種。
比如說requests、urllib這種是網絡數據請求工具,也就是抓取包;xpath、re、bs4這種會對抓取下來的網頁內容進行解析,稱為解析包。
爬取百度首頁圖片,並保存到本地
# 導入urlopenfrom urllib.request import urlopen# 導入BeautifulSoupfrom bs4 import BeautifulSoup as bf# 導入urlretrieve函數,用於下載圖片from urllib.request import urlretrieve# 請求獲取HTMLhtml = urlopen("http://www.baidu.com/")# 用BeautifulSoup解析htmlobj = bf(html.read(),'html.parser')# 從標簽head、title裡提取標題title = obj.head.title# 只提取logo圖片的信息logo_pic_info = obj.find_all('img',class_="index-logo-src")# 提取logo圖片的鏈接logo_url = "https:"+logo_pic_info[0]['src']# 使用urlretrieve下載圖片urlretrieve(logo_url, 'logo.png')
10、Python處理圖片圖表圖片處理、圖表可視化涉及到圖像處理,這也是Python的強項,現在諸如圖像識別、計算機視覺等前沿領域也都會用到Python。
在Python中處理圖像的包有scikit Image、PIL、OpenCV等,處理圖表的包有matplotlib、plotly、seaborn等。
對圖片進行黑白化處理
from PIL import Imagefrom PIL import ImageEnhanceimg_main = Image.open(u'E:/login1.png')img_main = img_main.convert('L')threshold1 = 138table1 = []for i in range(256): if i < threshold1: table1.append(0) else: table1.append(1)img_main = img_main.point(table1, "1")img_main.save(u'E:/login3.png')
生成統計圖表
import numpy as npimport matplotlib.pyplot as pltN = 5menMeans = (20, 35, 30, 35, 27)womenMeans = (25, 32, 34, 20, 25)menStd = (2, 3, 4, 1, 2)womenStd = (3, 5, 2, 3, 3)ind = np.arange(N) # the x locations for the groupswidth = 0.35 # the width of the bars: can also be len(x) sequencep1 = plt.bar(ind, menMeans, width, yerr=menStd)p2 = plt.bar(ind, womenMeans, width, bottom=menMeans, yerr=womenStd)plt.ylabel('Scores')plt.title('Scores by group and gender')plt.xticks(ind, ('G1', 'G2', 'G3', 'G4', 'G5'))plt.yticks(np.arange(0, 81, 10))plt.legend((p1[0], p2[0]), ('Men', 'Women'))plt.show()
小結總之Python會成為大眾化的編程語言,幫助到更多需要的人,更多關於Python辦公自動化處理的資料請關注軟件開發網其它相關文章!