c的 17 个令人惊叹的 Python 自动化脚本
你需要尝试的自动化脚本(合集) 17 个我每天使用的令人惊叹的Python自动化脚本 提升效率与性能的脚本 我使用Python已有近5年时间,它吸引我并激励我不断深入研究的一个特性就是自动化能力。过去一年里,我深入探索了Python的自动化领域,发现了一些令人惊叹的Python包、事实和有趣的脚本。在这篇博客中,我将分享一些我日常使用的自动化脚本,这些脚本显著提升了我的工作效率和性能。
1. 语音化 我喜欢书籍,但不喜欢自己阅读,我更喜欢听书。这个自动化脚本对我来说简直是救星,我经常用它来听PDF文件并将其转换为有声书,以便稍后收听。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 import PyPDF2import pyttsx3file = open ('story.pdf' , 'rb' ) readpdf = PyPDF2.PdfReader(file) speaker = pyttsx3.init() rate = speaker.getProperty('rate' ) speaker.setProperty('rate' , 200 ) volume = speaker.getProperty('volume' ) speaker.setProperty('volume' , 1 ) voices = speaker.getProperty('voices' ) for voice in voices: if "english" in voice.name.lower() and "us" in voice.name.lower(): speaker.setProperty('voice' , voice.id ) break for pagenumber in range (len (readpdf.pages)): page = readpdf.pages[pagenumber] text = page.extract_text() speaker.save_to_file(text, 'story.mp3' ) speaker.runAndWait() speaker.stop() file.close()
实际应用场景
视障人士的可访问性 :提供书面内容的音频版本,帮助视障人士轻松获取信息。
随时随地学习 :允许用户在通勤或锻炼时听取文章或教科书。
语言学习 :通过提供文本的音频版本来帮助语言学习者提高听力技能。
教育 :为学生提供阅读材料的音频版本,以提供更灵活的学习选择。
2. TabTornado 在编写这个脚本之前,我习惯将感兴趣的内容添加到书签,以便第二天阅读。然而,几周后我发现书签栏日益膨胀,每天寻找新书签变得异常困难。于是,我找到了一种Python解决方案来应对这个问题。通过这个自动化脚本,我可以轻松复制粘贴所有链接,并一键打开它们。
1 2 3 4 5 import webbrowserwith open ('links.txt' ) as file: links = file.readlines() for link in links: webbrowser.open ('link' )
应用 提升工作效率 :需要查阅多个工作相关网站的专业人士可以简化日常流程,将注意力集中在内容而非打开链接的过程上。学习与发展 :在线学习者可以一次性打开所有课程资料、文章和资源,使学习环节更加高效。
3. PicFetcher 在计算机视觉项目中,收集大量图像数据是一个关键挑战。正如吴恩达所指出的,拥有大型数据集可能比使用的特定算法更为重要。高质量的数据对于提高机器学习模型的性能和准确性至关重要。这个自动化脚本通过让你在几分钟内以最少的编程工作量从网络下载设定数量的图像,使这一过程变得更加容易。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 from simple_image_download import simple_image_download as simp response = simp.simple_image_download keyword = "狗" try : response().download(keyword, 20 ) print ("图像下载成功。" ) except Exception as e: print ("发生错误:" , e)
应用场景
构建计算机视觉数据集、横幅图像内容创作、营销活动、学术研究等众多领域。
4. PyInspector 每位开发者都深知追踪Python代码中错误的烦恼,常常陷入错误缠身的困境。编写干净高效的代码至关重要,但手动分析代码质量却令人望而生畏。此自动化脚本利用Pylint和Flake8包全面审查您的代码,对照编码标准进行比较,并精准定位逻辑错误。它确保您的代码遵循行业最佳实践,保持无误。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 import osimport subprocessdef analyze_code (directory ): python_files = [file for file in os.listdir(directory) if file.endswith('.py' )] if not python_files: print ("在指定目录中未找到Python文件。" ) return for file in python_files: print (f"正在分析文件: {file} " ) file_path = os.path.join(directory, file) print ("\n正在运行pylint..." ) pylint_command = f"pylint {file_path} " subprocess.run(pylint_command, shell=True ) print ("\n正在运行flake8..." ) flake8_command = f"flake8 {file_path} " subprocess.run(flake8_command, shell=True ) if __name__ == "__main__" : directory = r"C:\Users\abhay\OneDrive\Desktop\Part7" analyze_code(directory)
5. DataDummy 无论您是数据科学家需要样本数据来测试模型,还是仅仅想用随机信息填充不必要的表格,这个Python自动化脚本都极为有用。它能生成看似真实但完全虚构的数据集,非常适合测试、开发和模拟目的。此工具可以快速创建姓名、电子邮件、电话号码等,为各种数据生成需求提供多功能的解决方案。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 import pandas as pdfrom faker import Fakerimport randomfake = Faker() def generate_fake_data (num_entries=10 ): data = [] for _ in range (num_entries): entry = { "Name" : fake.name(), "Address" : fake.address(), "Email" : fake.email(), "Phone Number" : fake.phone_number(), "Date of Birth" : fake.date_of_birth(minimum_age=18 , maximum_age=65 ).strftime("%Y-%m-%d" ), "Random Number" : random.randint(1 , 100 ), "Job Title" : fake.job(), "Company" : fake.company(), "Lorem Ipsum Text" : fake.text(), } data.append(entry) return pd.DataFrame(data) if __name__ == "__main__" : num_entries = 10 fake_data_df = generate_fake_data(num_entries) fake_data_df
6. BgBuster 这个自动化脚本已成为我日常工具包中的重要组成部分。作为一名写作者,我经常需要处理图片,并且往往需要去除背景的图片。尽管网上有许多工具可以完成这项任务,但我对图片在互联网上的隐私和安全问题有所顾虑。这个Python脚本利用rembg包在本地去除图片背景,确保我的图片安全且私密。
1 2 3 4 5 6 7 8 9 10 11 12 13 from rembg import remove from PIL import Imageinput_img = 'monkey.jpg' output_img = 'monkey_rmbg.png' inp = Image.open (input_img) output = remove(inp) output.save(output_img)
7. MemoryMate 在工作中,我经常需要记住重要任务。为了解决这个问题并提高我的工作效率,我使用Python开发了MemoryMate,作为我的数字记忆助手。它会在指定时间后向我发送带有自定义消息的提醒,确保我能按时完成任务。MemoryMate显著提高了我的生产力,并帮助我始终按时完成任务。最棒的是,它简单易用,易于复制,且非常实用。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 from win10toast import ToastNotifierimport timetoaster = ToastNotifier() def set_reminder (): reminder_header = input ("What would you like me to remember?\n" ) related_message = input ("Related Message:\n" ) time_minutes = float (input ("In how many minutes?\n" )) time_seconds = time_minutes * 60 print ("Setting up reminder..." ) time.sleep(2 ) print ("All set!" ) time.sleep(time_seconds) toaster.show_toast( title=f"{reminder_header} " , msg=f"{related_message} " , duration=10 , threaded=True ) while toaster.notification_active(): time.sleep(0.005 ) if __name__ == "__main__" : set_reminder()
你知道吗?在Python中,你可以对极大的整数(如999**999)进行计算而不会出现溢出错误,因为Python会自动为大数使用“大整数”类型。
8. MonitorMax 😎 系统资源监控对于实时展示各种系统资源的利用率至关重要。对于需要跟踪系统性能、识别瓶颈并确保高效资源管理的用户、系统管理员和开发人员来说,这是一个不可或缺的工具。这个Python自动化脚本有助于监控CPU、GPU、电池和内存的使用情况,并在任何资源使用超过安全阈值时生成警报。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 import psutilimport timefrom win10toast import ToastNotifiertoaster = ToastNotifier() cpu_threshold = 40 memory_threshold = 40 gpu_threshold = 40 battery_threshold = 100 while True : try : cpu_usage = psutil.cpu_percent(interval=1 ) memory_usage = psutil.virtual_memory().percent gpu_usage = psutil.virtual_memory().percent battery = psutil.sensors_battery() if cpu_usage >= cpu_threshold: message = f"CPU使用率过高: {cpu_usage} %" toaster.show_toast("资源警报" , message, duration=10 ) if memory_usage >= memory_threshold: message = f"内存使用率过高: {memory_usage} %" toaster.show_toast("资源警报" , message, duration=10 ) if gpu_usage >= gpu_threshold: message = f"GPU使用率过高: {gpu_usage} %" toaster.show_toast("资源警报" , message, duration=10 ) if battery is not None and battery.percent <= battery_threshold and not battery.power_plugged: message = f"电池电量低: {battery.percent} %" toaster.show_toast("电池警报" , message, duration=10 ) time.sleep(300 ) except Exception as e: print ("发生错误:" , str (e)) break
应用场景: 该脚本可用于日常场景,如玩游戏、运行本地服务器、在本地训练深度学习模型等。通过跟踪所有资源,您可以确保脚本或任务使用最优内存,若非如此,您可以相应地进行优化。资源监控仪表板(您可以使用Tkinter创建一个仪表板,实时显示资源图表,类似于任务栏,并附加通知功能和高内存使用声音警报)。
9. EmailBlitz 处理大量电子邮件通信可能颇具挑战性,无论是用于营销活动、新闻简报还是组织更新。这个Python自动化脚本通过轻松实现批量发送电子邮件,简化了这项任务。它优化了通信流程,使您能够同时向大量收件人发送邮件,并确保消息及时高效地传递。此脚本非常适合营销人员、管理员或任何需要发送大量邮件的人士,它提高了生产力,节省了时间,并有助于在通信中保持个性化触感。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 import smtplib from email.message import EmailMessageimport pandas as pddef send_email (remail, rsubject, rcontent ): email = EmailMessage() email['from' ] = 'The Pythoneer Here' email['to' ] = remail email['subject' ] = rsubject email.set_content(rcontent) with smtplib.SMTP(host='smtp.gmail.com' ,port=587 )as smtp: smtp.ehlo() smtp.starttls() smtp.login(SENDER_EMAIL,SENDER_PSWRD) smtp.send_message(email) print ("email send to " ,remail) 你是否曾因同时处理多个文本片段而丢失了复制的内容?想象一下,有一个工具能记录你一整天复制的一切。这个Python自动化脚本正是如此。它监控你复制的所有内容,并将每个文本片段无缝存储在一个简洁的图形界面中。不再需要在无尽的标签页中搜索,也不再担心丢失宝贵信息——这个脚本让一切井然有序,易于访问。 ```python import tkinter as tkfrom tkinter import ttkimport pyperclipdef update_listbox (): new_item = pyperclip.paste() if new_item not in X: X.append(new_item) listbox.insert(tk.END, new_item) listbox.insert(tk.END, "----------------------" ) listbox.yview(tk.END) root.after(1000 , update_listbox) def copy_to_clipboard (event ): selected_item = listbox.get(listbox.curselection()) if selected_item: pyperclip.copy(selected_item) X = [] root = tk.Tk() root.title("Clipboard Manager" ) root.geometry("500x500" ) root.configure(bg="#f0f0f0" ) frame = tk.Frame(root, bg="#f0f0f0" ) frame.pack(padx=10 , pady=10 ) label = tk.Label(frame, text="Clipboard Contents:" , bg="#f0f0f0" ) label.grid(row=0 , column=0 ) scrollbar = tk.Scrollbar(root) scrollbar.pack(side=tk.RIGHT, fill=tk.Y) listbox = tk.Listbox(root, width=150 , height=150 , yscrollcommand=scrollbar.set ) listbox.pack(pady=10 ) scrollbar.config(command=listbox.yview) update_listbox() listbox.bind("<Double-Button-1>" , copy_to_clipboard) root.mainloop()
你知道吗?保存代码文件时,.py扩展名其实并不重要。
…………..
你可以使用任何类型的扩展名来保存你的Python文件,无论是.cow、.cat还是.mango,只要你的脚本有效,它就会运行并给出你期望的输出。
11. 简报机器人 我每天喜欢阅读文章、研究论文和新闻出版物,我知道很多人都有这个习惯。然而,找到时间阅读全文可能很困难。这个Python自动化脚本通过使用神经网络生成快速摘要来解决这个问题。它利用网络爬虫提取文章内容,并将其输入预训练模型,生成摘要,节省时间,使人们更容易获取信息。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 from transformers import BartForConditionalGeneration, BartTokenizerimport requestsfrom bs4 import BeautifulSoupdef summarize_article (article_text, max_length=150 ): model_name = "facebook/bart-large-cnn" tokenizer = BartTokenizer.from_pretrained(model_name) model = BartForConditionalGeneration.from_pretrained(model_name) inputs = tokenizer.encode("summarize: " + article_text, return_tensors="pt" , max_length=1024 , truncation=True ) summary_ids = model.generate(inputs, max_length=max_length, min_length=50 , length_penalty=2.0 , num_beams=4 , early_stopping=True ) summary = tokenizer.decode(summary_ids[0 ], skip_special_tokens=True ) return summary def scrape_webpage (url ): try : response = requests.get(url) response.raise_for_status() soup = BeautifulSoup(response.text, 'html.parser' ) all_text = soup.get_text(separator='\n' , strip=True ) return all_text except requests.exceptions.RequestException as e: print (f"Error: {e} " ) return None if __name__ == "__main__" : webpage_url = "https://www.bleepingcomputer.com/news/security/meet-brain-cipher-the-new-ransomware-behind-indonesia-data-center-attack/" webpage_text = scrape_webpage(webpage_url) if webpage_text: summary = summarize_article(webpage_text) print ("\nSummarized Article:" ) print (summary) else : print ("Webpage scraping failed." )
12. 拼写卫士 无论英语水平多高,在撰写长篇报告、文章或研究论文时,我们都难免会犯拼写和语法错误。在人工智能时代,众多强大的Python包可以帮助纠正这些错误,为您的作品提供精炼的校对。这个Python脚本利用AI检测并修正拼写和语法错误,确保您的写作清晰、准确且专业。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 !pip install lmproof import lmproof as lmdef Proofread (text ): proof = lm.load("en" ) error_free_text = proof.proofread(text) return error_free_text TEXT = '' Print(Proofread(TEXT))
13. 链接状态检查 拥有一个博客网站仍然是许多作家的梦想。确保所有链接正常运作对于维护一个专业且用户友好的博客至关重要。断开的链接可能会让读者感到沮丧,并损害您网站的可信度。这个Python自动化脚本使您能够轻松检查多个URL的网络连接状态。通过定期监控您的URL,该脚本确保您的链接始终保持活跃和功能正常,从而提升您网站的可靠性和用户体验。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 import csvimport requestsimport pprintdef get_status (website ): try : status = requests.get(website).status_code return "Working" if status == 200 else "Error 404" except : return "Connection Failed!!" def main (): with open ("sites.txt" , "r" ) as fr: websites = [line.strip() for line in fr] web_status_dict = {website: get_status(website) for website in websites} pprint.pprint(web_status_dict) with open ("web_status.csv" , "w" , newline='' ) as csvfile: fieldnames = ["Website" , "Status" ] writer = csv.DictWriter(csvfile, fieldnames=fieldnames) writer.writeheader() for website, status in web_status_dict.items(): writer.writerow({"Website" : website, "Status" : status}) print ("Data Uploaded to CSV File!!" ) if __name__ == "__main__" : main()
您可以在Python中使用中文作为变量名。
例如:金竹戈女日 = “Hello World”
14. 每日摘要 了解您所在城市、州、国家或世界的最新动态至关重要,但繁忙的日程往往使我们无法抽出时间阅读新闻。这个自动化脚本通过从谷歌新闻抓取热门新闻并朗读给您听,解决了这一问题。无论您是开始新的一天还是在路上,该脚本都能让您轻松掌握头条新闻。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 import pyttsx3 import requestsengine = pyttsx3.init('sapi5' ) voices = engine.getProperty('voices' ) engine.setProperty('voice' , voices[0 ].id ) def speak (audio ): engine.say(audio) engine.runAndWait() def trndnews (): url = " http://newsapi.org/v2/top-headlines?country=us&apiKey=GET_YOUR_OWN" page = requests.get(url).json() article = page["articles" ] results = [] for ar in article: results.append(ar["title" ]) for i in range (len (results)): print (i + 1 , results[i]) speak(results) trndnews() '''运行脚本以获取美国头条新闻'''
15. QRGenie 随着人们开始使用二维码进行支付的收发,二维码的普及率急剧上升。如今,二维码被用于分享社交链接、秘密信息、优惠码等。这个Python自动化脚本帮助你创建带有自选数据的定制二维码,使你能够轻松分享信息并给观众留下深刻印象。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 import qrcodedef generate_qr_code (link, filename ): """Generates a QR code for the given link and saves it as filename.""" qr = qrcode.QRCode( version=1 , error_correction=qrcode.constants.ERROR_CORRECT_L, box_size=10 , border=4 , ) qr.add_data(link) qr.make(fit=True ) img = qr.make_image(fill_color="black" , back_color="white" ) img.save("profile.png" ) if __name__ == "__main__" : generate_qr_code("https://abhayparashar31.medium.com/" , "Profile.png" ) print (f"QR code saved successfully!!" )
16. 缩短链接 我每天处理大量链接,有些我会保存,有些则与读者分享。我最不喜欢的URL特性就是它们的长度,这既烦人又难以阅读。这个自动化脚本通过使用外部API将长链接转换为短小易管理的链接,有效地解决了这个问题。
1 2 3 4 5 6 7 8 import pyshortenersdef generate_short_url (long_url ): s = pyshorteners.Shortener() return s.tinyurl.short(long_url) long_url = input ('粘贴长链接 \n' ) short_url = generate_short_url(long_url) print (short_url)
17. 屏幕录制工具CaptureIt 无论您是游戏玩家、网红、艺术家还是开发者,屏幕录制软件对于捕捉您的活动至关重要。然而,许多现有解决方案要么价格昂贵,要么存在水印和时间限制等限制。这个Python自动化脚本提供了一个简单的屏幕录制解决方案,无需水印、无时间限制,并且可以自定义屏幕窗口选项。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 import cv2import numpy as npimport pyautoguiSCREEN_SIZE = tuple (pyautogui.size()) fourcc = cv2.VideoWriter_fourcc('M' ,'J' ,'P' ,'G' ) fps = 12.0 record_seconds = 20 out = cv2.VideoWriter("video.mp4" , fourcc, fps, SCREEN_SIZE) for _ in range (int (record_seconds * fps)): img = pyautogui.screenshot(region=(0 , 0 , 500 , 900 )) frame = np.array(img) frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) out.write(frame) cv2.imshow("video frame" , frame) if cv2.waitKey(1 ) == ord ("q" ): break cv2.destroyAllWindows() out.release()
奖金 H2OReminder 这个自动化脚本是一个简单而强大的程序,旨在通过定期提醒用户喝水来促进保持水分。对于长时间面对电脑或日程繁忙可能导致忘记喝足够水的人来说,这是一个不可或缺的工具。该脚本通过鼓励定期饮水来促进健康习惯,这对于维持整体健康和福祉至关重要。
1 2 3 4 5 6 7 8 9 10 11 12 import timefrom plyer import notificationif __name__ == "__main__" : while True : notification.notify( title="请喝水" , message="美国国家科学院、工程院和医学院确定,适当的日常水分摄入量为:男性每天约15.5杯(3.7升)水。女性每天约11.5杯(2.7升)水。请继续喝水!!!" , app_icon="./Desktop-drinkWater-Notification/icon.ico" , timeout=12 ) time.sleep(1800 )
感谢您阅读到这里,如果您喜欢我的内容并希望支持我,最好的方式是——
留下一个赞👋 并在下方发表您的想法💬。
在Medium 上关注我。
在LinkedIn 上与我联系。
订阅我的邮件列表 ,不错过我的任何一篇文章。