五个有趣的Python脚本
2022-10-11 05:47:54来源:Python大数据分析
(资料图片)
Python可以玩的方向有很多,比如爬虫、预测分析、GUI、自动化、图像处理、可视化等等,可能只需要十几行代码就能实现酷炫的功能。
因为Python是动态脚本语言,所以代码逻辑比Java要简要很多,实现同样的功能少写很多代码。而且Python生态有众多的第三方工具库,把功能都封装在包里,只需要你调用接口,就能使用复杂的功能。
下面举几个简单好玩的脚本例子,初学者可以照着代码写写,能快速掌握python语法。
1、使用PIL、Matplotlib、Numpy对模糊老照片进行修复import numpy as npimport matplotlib.pyplot as pltfrom PIL import Imageimport os.pathimg_path = "E:\\test.jpg"img = Image.open(img_path)img = np.asarray(img)flat = img.flatten()def get_histogram(image, bins): histogram = np.zeros(bins) for pixel in image: histogram[pixel] += 1 return histogramhist = get_histogram(flat, 256)cs = np.cumsum(hist)nj = (cs - cs.min()) * 255N = cs.max() - cs.min()cs = nj / Ncs = cs.astype("uint8")img_new = cs[flat]img_new = np.reshape(img_new, img.shape)fig = plt.figure()fig.set_figheight(15)fig.set_figwidth(15)fig.add_subplot(1, 2, 1)plt.imshow(img, cmap="gray")plt.title("Image "Before" Contrast Adjustment")fig.add_subplot(1, 2, 2)plt.imshow(img_new, cmap="gray")plt.title("Image "After" Contrast Adjustment")filename = os.path.basename(img_path)plt.show()2、将文件批量压缩,使用zipfile库
import osimport zipfilefrom random import randrangedef zip_dir(path, zip_handler): for root, dirs, files in os.walk(path): for file in files: zip_handler.write(os.path.join(root, file))if __name__ == "__main__": to_zip = input("""Enter the name of the folder you want to zip(N.B.: The folder name should not contain blank spaces)>""") to_zip = to_zip.strip() + "/" zip_file_name = f"zip{randrange(0,10000)}.zip" zip_file = zipfile.ZipFile(zip_file_name, "w", zipfile.ZIP_DEFLATED) zip_dir(to_zip, zip_file) zip_file.close() print(f"File Saved as {zip_file_name}")3、使用tkinter制作计算器GUI
tkinter是python自带的GUI库,适合初学者练手创建小软件
import tkinter as tkroot = tk.Tk() root.title("Standard Calculator") root.resizable(0, 0) e = tk.Entry(root, width=35, bg="#f0ffff", fg="black", borderwidth=5, justify="right", font="Calibri 15")e.grid(row=0, column=0, columnspan=3, padx=12, pady=12)def buttonClick(num): temp = e.get( ) e.delete(0, tk.END) e.insert(0, temp + num) def buttonClear(): e.delete(0, tk.END)4、PDF转换为Word文件
使用pdf2docx库,可以将PDF文件转为Word格式
from pdf2docx import Converterimport os import syspdf = input("Enter the path to your file: ")assert os.path.exists(pdf), "File not found at, "+str(pdf)f = open(pdf,"r+")doc_name_choice = input("Do you want to give a custom name to your file ?(Y/N)")if(doc_name_choice == "Y" or doc_name_choice == "y"): doc_name = input("Enter the custom name : ")+".docx" else: pdf_name = os.path.basename(pdf) doc_name = os.path.splitext(pdf_name)[0] + ".docx" cv = Converter(pdf)path = os.path.dirname(pdf)cv.convert(os.path.join(path, "", doc_name) , start=0, end=None)print("Word doc created!")cv.close()5、Python自动发送邮件
使用smtplib和email库可以实现脚本发送邮件。
import smtplibimport emailfrom email.mime.text import MIMETextfrom email.mime.image import MIMEImagefrom email.mime.multipart import MIMEMultipartfrom email.header import Headermail_host = "smtp.163.com"mail_sender = "******@163.com"mail_license = "********"mail_receivers = ["******@qq.com","******@outlook.com"]mm = MIMEMultipart("related")subject_content = """Python邮件测试"""mm["From"] = "sender_name<******@163.com>"mm["To"] = "receiver_1_name<******@qq.com>,receiver_2_name<******@outlook.com>"mm["Subject"] = Header(subject_content,"utf-8")body_content = """你好,这是一个测试邮件!"""message_text = MIMEText(body_content,"plain","utf-8")mm.attach(message_text)image_data = open("a.jpg","rb")message_image = MIMEImage(image_data.read())image_data.close()mm.attach(message_image)atta = MIMEText(open("sample.xlsx", "rb").read(), "base64", "utf-8")atta["Content-Disposition"] = "attachment; filename="sample.xlsx""mm.attach(atta)stp = smtplib.SMTP()stp.connect(mail_host, 25) stp.set_debuglevel(1)stp.login(mail_sender,mail_license)stp.sendmail(mail_sender, mail_receivers, mm.as_string())print("邮件发送成功")stp.quit()小结
Python还有很多好玩的小脚本,你可以根据自己的场景来编写,也可以使用现成的第三方库。