你們都用python做些什么呢?
在開發中 python 這一個語言就像是小叮當,而 python 的第三方庫則是“百寶箱”,你只要想著對某一個方向進行開發,那么這個“百寶箱”就會給你想要的東西。
由于我是在開發多年后接觸到的 python,對我來說自從接觸 python 就打開了“新世界”的大門。(我正在求設計做一張圖,還沒做完,做完貼上在這里)
一、做個自己玩游戲的程序
在前幾年,我有一個朋友是一個“游戲商人”,不過大多數他是手動進行商品處理。
他有一天找到我,跟我說“嗨兄弟,會不會做外G?”!
此時我覺得他在嘲諷我,為了我自己的自尊,我回答了“不會!”。
有一說一,我是一個正經程序員,那一方面我真的不會。不過在他看起來程序員就應該要解決計算機的一切問題,在此觀點作祟之下,他一而再再而三的纏著我,最后我聽了一下他的需求之后,我又覺得我可以了。
當時他的需求是想完成一個游戲的自動化操作(他自己一個人手動操作煩死了,據說一天可以賺好幾百),當時我研究了一下他所說的一個手機游戲,發現所有邏輯都是“死”的,升級套路有固定劇情,并且對應的游戲玩法也相對固定,看他如此堅持我就同意了。
接下來我查了一下 python 相關的資料,發現了一個神奇的東西 Airtest,是網易開發的,據說是為了做一些測試,在原生應用下簡直可以“為所欲為”。為了測試這個東西的是否真的牛啤,我就直接下載了 Airtest 的 IDE,在開發時踩了一些坑,但最終還是實現了對應項目的 自動化操作。最后我朋友感激涕零的拉著我喝了三天三夜,當時我覺得我不應該做出來給他去禍害我自己。
二、自動化辦公
說到這個自動化辦公我本身是不涉及到的,但在粉絲群里有很多同學是為了自動化辦公而學習的python,但是由于經驗不足,導致學完后自己卻不能完成一些應用的開發,就在群里面艾特到我講解一些功能如何實現。
我列出了幾個比較常規的需求:
- 批量文本提取出手機號碼
- 批量文本存儲到 Excel 中
- 批量文本提取出郵箱
- 批量圖片加水印
- 批量刪除重復文件
- 批量文章算中文字數
- 批量生成gif
- 批量英文翻譯
- 視頻音軌批量提取
像取電話號碼、郵箱基本上都是直接使用正則就可以提取了,若是需要操作 Excel 只需要使用 xlwt 庫就可以完成,加水印這些只需要使用 opencv 庫,對比相同文件只需要判斷 md5 文件的值就可以了,翻譯就是使用 translate 庫。
由于代碼不難,我就不在這里寫出來了,如果需要的評論區可以留言,人多的話我就更新話題把代碼也講一遍了。
想了想,為了大家的收藏量我決定直接把代碼打出來吧。
自動化辦公解釋文章跳轉:https://blog.csdn.net/A757291228/article/details/117464313。
批量文本提取出手機號碼:
#讀取目標文本文件
def get_str(path):f = open(path,encoding="utf-8") data = f.read()f.close()return data
import re#正則獲取文本號碼
def get_phone_number(str):res = re.findall(r'(13\d{9}|14[5|7]\d{8}|15\d{9}|166{\d{8}|17[3|6|7]{\d{8}|18\d{9})', str)return res
#保存得到號碼
def save_res(res,save_path):save_file = open(save_path, 'w') for phone in res: save_file.write(phone) save_file.write('\n') save_file.write('\n號碼共計:'+str(len(res)))save_file.close() print('號碼讀取OK,號碼共計:'+str(len(res)))
path=input("請輸入文件路徑:")
save_path=input("請輸入文件保存路徑:")
#read_str=get_str(path)
res=get_phone_number(get_str(path))
save_res(res,save_path)
批量文本存儲到 Excel 中:
import xlwt
#讀取目標文本文件
def get_str(path):f = open(path,encoding="utf-8") data = f.read()f.close()return data
#保存為Excel文件
def save_excel(save_path,sheetname,column_name_list,read_list):workbook = xlwt.Workbook()sheet1 = workbook.add_sheet(sheetname=sheetname)for i in range(0,len(column_name_list)):sheet1.write(0,i,column_name_list[i])i=1for v in read_list:kval=v.split(':')for j in range(0,len(kval)):sheet1.write(i+1,j,kval[j])i=i+1workbook.save(save_path)print('信息保存 OK,記錄條數共計:'+str(len(read_list)))
path=input("請輸入文件路徑:")
save_path=input("請輸入文件保存路徑:")
sheet_name=input("請輸入sheetname:")
column_name=input("請輸入列名,并且使用英文逗號隔開:")
column_name_list=column_name.split(',')read_str=get_str(path)
read_list=read_str.split('\n')
save_excel(save_path,sheet_name,column_name_list,read_list)
批量刪除重復文件:
import hashlib,os
def getMD5(filepath):f = open(filepath,'rb')md5obj = hashlib.md5()md5obj.update(f.read())hash = md5obj.hexdigest()f.close()return str(hash).upper()
path=input("請輸入需要重復文件過濾文件夾路徑:")
file_list = os.listdir(path)
file_md5=[]
for filename in file_list:md5val=getMD5(path+filename)if md5val in file_md5:os.remove(path+filename)else:file_md5.append(md5val)
print("處理完畢...")
批量英文翻譯:
from translate import Translator
translator = Translator(to_lang="Chinese")
def get_str(path):f = open(path) data = f.read()f.close()return data
path=input("請輸入文件路徑:")
text=get_str(path)
以上的代碼是基礎代碼,相似需求的內容我就不貼出來了。
代碼需要大家修改喲,代碼很簡單,看看就ok了。
三、python 爬蟲
python 還可以去做一些爬蟲方面的開發,例如你想要一些數據進行研究,可能你會使用 scrapy 之類的 python 爬蟲框架,也可以使用 selenium 自動化測試框架做爬蟲也是很方便。
專業用 scrapy 當然會更強大,但是 selenium 對于新手來說用起來也是非常棒的,可以忽略很多問題對網頁信息進行提取。
但是需要注意,爬蟲一定要合規使用喲。
四、python 機器學習、圖像識別
python 做人工智能這一塊也是非常方便,我記得我之前輔導一個情報學的同學做一個輿情分析系統,當時就是用了 python 制作,結合使用 sklearn 庫,在可允許的誤差中實現了這一套系統,這個還是非常棒的。
python 還可以通過 opencv 做圖像識別,或者對圖像進行模糊、加強等操作。我當時接觸 opencv 是因為有一個平臺說要征稿,一番計算之后發現學習成本和稿酬相比,稿酬比較誘人,接著我就接觸了,就寫了一些小東西,這個體驗還是非常贊的。
五、python web方面
用 python 做 web 方面是一個較為常規的方向,python web 我接觸的比較晚,因為之前做 web 我是使用的 php(為什么不用 java 是因為我年少時被 java 坑太慘了)。
我第一個接觸的 python web 框架是 django。當時由于公司的一個項目是使用了 django 進行開發,我問開發(小農同學)這東西玩得怎么樣,他跟我說“太簡單了,直接就可以生成一個完整的項目。”!
我一聽,心想這不就是跟那些 WordPress、discuz 一樣嗎?這還是 python?
于是為了搞懂 django,自己試了一下,果真 django 對開發一些項目及其方便。若使用 django 可以將其比喻成房子的地基(且軟硬完全),再通過自己編寫一“模塊”為這個房子添加更多功能,在開發一些方向的 web 來說是非常方便的。
之后查了一下資料,發現了 Instagram 竟然就是 django 進行開發的。
六、畫畫
python 還可以通過代碼畫畫,通過 turtle 畫出很精美的作品。
turtle 是 python 的一個圖像繪制庫,我從資料上得知 turtle 是用來給青少年學習更好 python 的方式。我嘗試了一下,確實很贊,下面就是我之前繪制出的一顆清新小樹:
這里是我的代碼,解釋文章跳轉:ttps://blog.csdn.net/A757291228/article/details/106029202:
from turtle import *
import randomdef drawTree(length):if length>1:if length<30 and length>14:#縮小一下樹干pensize(4)elif length<15 and length>5:#長度這個范圍內那么就是綠葉color('#04B486')#pensize(3)elif length<5 and length>1:#紅花color('#FE2E9A')pensize(2)else:color('#5E5E5E')#其他范圍就是正常的樹干pensize(5)#隨機角度與長度randangle=2*random.random()randlen=2*random.random()#每次使用函數先繪制線段,再調整角度,這里是向右的角度轉動fd(length)right(20*randangle)drawTree(length - 10*randlen)#這里是向左的角度轉動left(40 * randangle)drawTree(length - 10*randlen)#為什么需要再向右轉20度?那是因為我一共向左轉了40度,使用backward后退,必須是相同的角度,不然退回去角度就不同了位置就不會對right(20 * randangle)up()backward(length)down()
def fallingFlowers(m):x,y=-1000,-750for i in range(30):up()goto(x,y)x+=100down()yval=50for i in range(m):a = 100*random.random()b = 2*random.random()print(a)if a>59:color('#FE2E9A')else:color('#04B486')circle(5)up()goto(x,y+(yval*b))fd(a)yval+=50down() setworldcoordinates(-1000,-750,1000,750)
tracer(False)fallingFlowers(10)#繪制落葉
bgcolor("#F5F6CE")
color('#5E5E5E')
pensize(5)up()
goto(0,-700)#跳到繪制起始點
down()left(80)
fd(140)
drawTree(120)input()