10個常用python自動化腳本
大家好,Python憑借其簡單和通用性,能夠?yàn)榻鉀Q每天重復(fù)同樣的工作提供最佳方案。本文將探索10個Python腳本,這些腳本可以幫助自動化完成任務(wù),提高工作效率。無論是開發(fā)者、數(shù)據(jù)分析師還是僅僅想簡化工作流程的普通用戶,這些腳本都能提供幫助。
1. 自動化文件管理
1.1 排序目錄中的文件
# Python腳本,用于根據(jù)文件擴(kuò)展名對目錄中的文件進(jìn)行排序 import os from shutil import move def sort_files(directory_path): for filename in os.listdir(directory_path): if os.path.isfile(os.path.join(directory_path, filename)): file_extension = filename.split('.')[-1] destination_directory = os.path.join(directory_path, file_extension) if not os.path.exists(destination_directory): os.makedirs(destination_directory) move(os.path.join(directory_path, filename), os.path.join(destination_directory, filename))
根據(jù)文件擴(kuò)展名將文件分類到子目錄中,來組織目錄中的文件。它識別文件擴(kuò)展名并將文件移動到適當(dāng)?shù)淖幽夸浿?,這對于整理下載文件夾或組織特定項(xiàng)目的文件非常有用。
1.2 刪除空文件夾
# Python腳本,用于刪除目錄中的空文件夾 import os def remove_empty_folders(directory_path): for root, dirs, files in os.walk(directory_path, topdown=False): for folder in dirs: folder_path = os.path.join(root, folder) if not os.listdir(folder_path): os.rmdir(folder_path)
腳本用于在指定目錄中搜索和刪除空文件夾,維護(hù)干凈整潔的文件夾結(jié)構(gòu),特別是在處理大量數(shù)據(jù)集時。
1.3 批量重命名文件
# Python腳本,用于批量重命名目錄中的文件 import os def rename_files(directory_path, old_name, new_name): for filename in os.listdir(directory_path): if old_name in filename: new_filename = filename.replace(old_name, new_name) os.rename(os.path.join(directory_path, filename), os.path.join(directory_path, new_filename))
腳本允許同時批量重命名目錄中的多個文件。它以舊名稱和新名稱作為輸入,并將所有匹配的文件中的舊名稱替換為新名稱。
2. 使用Python進(jìn)行網(wǎng)頁抓取
2.1 從網(wǎng)站中提取數(shù)據(jù)
# 使用Python進(jìn)行網(wǎng)頁抓取的腳本,以從網(wǎng)站中提取數(shù)據(jù) import requests from bs4 import BeautifulSoup def scrape_data(url): response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') # 在此處編寫代碼,從網(wǎng)站中提取相關(guān)數(shù)據(jù)
腳本利用requests和BeautifulSoup庫來抓取網(wǎng)站的數(shù)據(jù)。它獲取網(wǎng)頁內(nèi)容并使用BeautifulSoup解析HTML,可以自定義該腳本以提取諸如標(biāo)題、產(chǎn)品信息或價格等特定數(shù)據(jù)。
2.2 批量下載圖片
# Python腳本,用于從網(wǎng)站批量下載圖片 import requests def download_images(url, save_directory): response = requests.get(url) if response.status_code == 200: images = response.json() # 假設(shè)API返回圖片URL的JSON數(shù)組 for index, image_url in enumerate(images): image_response = requests.get(image_url) if image_response.status_code == 200: with open(f"{save_directory}/image_{index}.jpg", "wb") as f: f.write(image_response.content)
腳本旨在從網(wǎng)站批量下載圖片,它假設(shè)該網(wǎng)站提供一個返回圖片URL數(shù)組的JSON API。該腳本然后遍歷這些URL并下載圖片,將其保存到指定的目錄中。
2.3 自動提交表單
# Python腳本,用于自動在網(wǎng)站上提交表單 import requests def submit_form(url, form_data): response = requests.post(url, data=form_data) if response.status_code == 200: # 在此處編寫代碼以處理表單提交后的響應(yīng)
腳本使用POST請求以表單數(shù)據(jù)自動在網(wǎng)站上提交表單,可以通過提供URL和要提交的表單數(shù)據(jù)來自定義該腳本。
3. 文本處理和操作
3.1 統(tǒng)計文本文件中的單詞數(shù)
# Python腳本,用于統(tǒng)計文本文件中的單詞數(shù) def count_words(file_path): with open(file_path, 'r') as f: text = f.read() word_count = len(text.split()) return word_count
腳本讀取文本文件并統(tǒng)計其中包含的單詞數(shù),可以用于快速分析文本文檔的內(nèi)容,或跟蹤寫作項(xiàng)目中的字?jǐn)?shù)。
3.2 查找和替換文本
# Python腳本,用于在文件中查找和替換文本 def find_replace(file_path, search_text, replace_text): with open(file_path, 'r') as f: text = f.read() modified_text = text.replace(search_text, replace_text) with open(file_path, 'w') as f: f.write(modified_text)
腳本在文件中搜索特定文本并將其替換為所需文本,它對批量替換大型文本文件中的某些短語或更正錯誤非常有用。
3.3 生成隨機(jī)文本
# Python腳本,用于生成隨機(jī)文本 import random import string def generate_random_text(length): letters = string.ascii_letters + string.digits + string.punctuation random_text = ''.join(random.choice(letters) for i in range(length)) return random_text
腳本生成指定長度的隨機(jī)文本,可用于測試和模擬目的,甚至作為創(chuàng)作的隨機(jī)內(nèi)容源。
4. 自動發(fā)送電子郵件
4.1 發(fā)送個性化電子郵件
# Python腳本,用于向收件人列表發(fā)送個性化電子郵件 import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart def send_personalized_email(sender_email, sender_password, recipients, subject, body): server = smtplib.SMTP('smtp.gmail.com', 587) server.starttls() server.login(sender_email, sender_password) for recipient_email in recipients: message = MIMEMultipart() message['From'] = sender_email message['To'] = recipient_email message['Subject'] = subject message.attach(MIMEText(body, 'plain')) server.sendmail(sender_email, recipient_email, message.as_string()) server.quit()
腳本能夠向收件人列表發(fā)送個性化電子郵件,可以自定義發(fā)件人的電子郵件、密碼、主題、正文以及收件人列表。請注意,出于安全考慮,使用Gmail時應(yīng)使用應(yīng)用專用密碼。
4.2 發(fā)送帶附件的電子郵件
# Python腳本,用于發(fā)送帶有附件的電子郵件 import smtplib from email.mime.multipart import MIMEMultipart from email.mime.base import MIMEBase from email import encoders def send_email_with_attachment(sender_email, sender_password, recipient_email, subject, body, file_path): server = smtplib.SMTP('smtp.gmail.com', 587) server.starttls() server.login(sender_email, sender_password) message = MIMEMultipart() message['From'] = sender_email message['To'] = recipient_email message['Subject'] = subject message.attach(MIMEText(body, 'plain')) with open(file_path, "rb") as attachment: part = MIMEBase('application', 'octet-stream') part.set_payload(attachment.read()) encoders.encode_base64(part) part.add_header('Content-Disposition', f"attachment; filename= {file_path}") message.attach(part) server.sendmail(sender_email, recipient_email, message.as_string()) server.quit()
腳本允許發(fā)送帶有附件的電子郵件,只需提供發(fā)件人的電子郵件、密碼、收件人的電子郵件、主題、正文以及要附加的文件的路徑即可。
4.3 自動電子郵件提醒
# Python腳本,用于發(fā)送自動電子郵件提醒 import smtplib from email.mime.text import MIMEText from datetime import datetime, timedelta def send_reminder_email(sender_email, sender_password, recipient_email, subject, body, reminder_date): server = smtplib.SMTP('smtp.gmail.com', 587) server.starttls() server.login(sender_email, sender_password) now = datetime.now() reminder_date = datetime.strptime(reminder_date, '%Y-%m-%d') if now.date() == reminder_date.date(): message = MIMEText(body, 'plain') message['From'] = sender_email message['To'] = recipient_email message['Subject'] = subject server.sendmail(sender_email, recipient_email, message.as_string()) server.quit()
腳本基于指定日期發(fā)送自動電子郵件提醒,對設(shè)置重要任務(wù)或事件的提醒非常有用,確保不會錯過最后期限。
5. 自動化Excel電子表格
5.1 讀寫Excel
# Python腳本,用于讀寫Excel電子表格中的數(shù)據(jù) import pandas as pd def read_excel(file_path): df = pd.read_excel(file_path) return df def write_to_excel(data, file_path): df = pd.DataFrame(data) df.to_excel(file_path, index=False)
腳本使用pandas庫從Excel電子表格中讀取數(shù)據(jù)并將數(shù)據(jù)寫入新的Excel文件。它允許以編程方式處理Excel文件,從而提高數(shù)據(jù)操作和分析的效率。
5.2 數(shù)據(jù)分析和可視化
# 使用pandas和matplotlib進(jìn)行數(shù)據(jù)分析和可視化的Python腳本 import pandas as pd import matplotlib.pyplot as plt def analyze_and_visualize_data(data): # 在此處編寫數(shù)據(jù)分析和可視化的代碼 pass
腳本使用pandas和matplotlib庫執(zhí)行數(shù)據(jù)分析和可視化,能夠探索數(shù)據(jù)集、洞察數(shù)據(jù)以及創(chuàng)建數(shù)據(jù)的可視化表示。
5.3 合并多個表格
# Python腳本,用于將多個Excel表合并為一個表 import pandas as pd def merge_sheets(file_path, output_file_path): xls = pd.ExcelFile(file_path) df = pd.DataFrame() for sheet_name in xls.sheet_names: sheet_df = pd.read_excel(xls, sheet_name) df = df.append(sheet_df) df.to_excel(output_file_path, index=False)
腳本合并Excel文件中多個表的數(shù)據(jù)到一個表中,當(dāng)數(shù)據(jù)分布在不同的表中,但想進(jìn)行匯總以進(jìn)行進(jìn)一步分析時,會很方便。
6. 與數(shù)據(jù)庫交互
6.1 連接數(shù)據(jù)庫
# Python腳本,用于連接數(shù)據(jù)庫并執(zhí)行查詢 import sqlite3 def connect_to_database(database_path): connection = sqlite3.connect(database_path) return connection def execute_query(connection, query): cursor = connection.cursor() cursor.execute(query) result = cursor.fetchall() return result
腳本允許連接SQLite數(shù)據(jù)庫并執(zhí)行查詢,使用適當(dāng)?shù)腜ython數(shù)據(jù)庫驅(qū)動程序,可以將其修改為使用其他數(shù)據(jù)庫管理系統(tǒng)(如MySQL或PostgreSQL)。
6.2 執(zhí)行SQL查詢
# Python腳本,用于在數(shù)據(jù)庫上執(zhí)行SQL查詢 import sqlite3 def execute_query(connection, query): cursor = connection.cursor() cursor.execute(query) result = cursor.fetchall() return result
腳本是一個通用函數(shù),用于在數(shù)據(jù)庫上執(zhí)行SQL查詢??梢詫⒉樵冏鳛閰?shù)傳遞給該函數(shù)以及數(shù)據(jù)庫連接對象,它將返回查詢的結(jié)果。
6.3 數(shù)據(jù)備份和恢復(fù)
import shutil def backup_database(database_path, backup_directory): shutil.copy(database_path, backup_directory) def restore_database(backup_path, database_directory): shutil.copy(backup_path, database_directory)
腳本允許創(chuàng)建數(shù)據(jù)庫的備份并在需要時進(jìn)行恢復(fù),是防止寶貴數(shù)據(jù)意外丟失的預(yù)防措施。
7. 自動化系統(tǒng)任務(wù)
7.1 管理系統(tǒng)進(jìn)程
# Python腳本,用于管理系統(tǒng)進(jìn)程 import psutil def get_running_processes(): return [p.info for p in psutil.process_iter(['pid', 'name', 'username'])] def kill_process_by_name(process_name): for p in psutil.process_iter(['pid', 'name', 'username']): if p.info['name'] == process_name: p.kill()
腳本使用psutil庫來管理系統(tǒng)進(jìn)程,允許檢索運(yùn)行進(jìn)程的列表并通過名稱終止指定的進(jìn)程。
7.2 使用Cron安排任務(wù)
# Python腳本,用于使用cron語法安排任務(wù) from crontab import CronTab def schedule_task(command, schedule): cron = CronTab(user=True) job = cron.new(command=command) job.setall(schedule) cron.write()
腳本利用crontab庫使用cron語法來調(diào)度任務(wù),支持以正則間隔或特定時間自動執(zhí)行特定命令。
7.3 監(jiān)控磁盤空間
# Python腳本,用于監(jiān)控磁盤空間并在空間不足時發(fā)送警告 import psutil def check_disk_space(minimum_threshold_gb): disk = psutil.disk_usage('/') free_space_gb = disk.free / (2**30) # 將字節(jié)轉(zhuǎn)換為GB if free_space_gb < minimum_threshold_gb: # 在此處編寫代碼以發(fā)送警告(電子郵件、通知等) pass
腳本監(jiān)視系統(tǒng)上的可用磁盤空間,如果低于指定閾值則發(fā)送警告,這對于磁盤空間的積極管理和避免因磁盤空間不足導(dǎo)致的數(shù)據(jù)丟失非常有用。
8. 網(wǎng)絡(luò)自動化
8.1 檢查網(wǎng)站狀態(tài)
# Python腳本,用于檢查網(wǎng)站狀態(tài) import requests def check_website_status(url): response = requests.get(url) if response.status_code == 200: # 在此處編寫代碼以處理成功的響應(yīng) else: # 在此處編寫代碼以處理不成功的響應(yīng)
腳本通過向提供的URL發(fā)送HTTP GET請求來檢查網(wǎng)站的狀態(tài),有助于監(jiān)控網(wǎng)站的可用性及其響應(yīng)代碼。
8.2 自動化FTP傳輸
# Python腳本,用于自動化FTP文件傳輸 from ftplib import FTP def ftp_file_transfer(host, username, password, local_file_path, remote_file_path): with FTP(host) as ftp: ftp.login(user=username, passwd=password) with open(local_file_path, 'rb') as f: ftp.storbinary(f'STOR {remote_file_path}', f)
腳本使用FTP協(xié)議自動化文件傳輸,連接到FTP服務(wù)器,使用提供的憑據(jù)登錄,并將本地文件上傳到指定的遠(yuǎn)程位置。
8.3 網(wǎng)絡(luò)設(shè)備配置
# Python腳本,用于自動化網(wǎng)絡(luò)設(shè)備配置 from netmiko import ConnectHandler def configure_network_device(host, username, password, configuration_commands): device = { 'device_type': 'cisco_ios', 'host': host, 'username': username, 'password': password, } with ConnectHandler(device) as net_connect: net_connect.send_config_set(configuration_commands)
腳本使用netmiko庫自動配置網(wǎng)絡(luò)設(shè)備,如思科路由器和交換機(jī),可以提供一系列配置命令,腳本將在目標(biāo)設(shè)備上執(zhí)行它們。
9. 數(shù)據(jù)清理和轉(zhuǎn)換
9.1 從數(shù)據(jù)中刪除重復(fù)項(xiàng)
# Python腳本,用于從數(shù)據(jù)中刪除重復(fù)項(xiàng) import pandas as pd def remove_duplicates(data_frame): cleaned_data = data_frame.drop_duplicates() return cleaned_data
腳本使用pandas從數(shù)據(jù)集中刪除重復(fù)行,這是確保數(shù)據(jù)完整性和提高數(shù)據(jù)分析的簡單有效的方法。
9.2 數(shù)據(jù)規(guī)范化
# 數(shù)據(jù)規(guī)范化的Python腳本 import pandas as pd def normalize_data(data_frame): normalized_data = (data_frame - data_frame.min()) / (data_frame.max() - data_frame.min()) return normalized_data
腳本使用最小-最大規(guī)范化技術(shù)對數(shù)據(jù)進(jìn)行規(guī)范化,將數(shù)據(jù)集中的值縮放到0到1范圍內(nèi),使比較不同特征更容易。
9.3 處理缺失值
# Python腳本,用于處理數(shù)據(jù)中的缺失值 import pandas as pd def handle_missing_values(data_frame): filled_data = data_frame.fillna(method='ffill') return filled_data
腳本使用pandas處理數(shù)據(jù)集中的缺失值,使用向前填充方法用前一個非缺失值填充缺失值。
10. 自動化PDF操作
10.1 從PDF中提取文本
# Python腳本,用于從PDF中提取文本 import PyPDF2 def extract_text_from_pdf(file_path): with open(file_path, 'rb') as f: pdf_reader = PyPDF2.PdfFileReader(f) text = '' for page_num in range(pdf_reader.numPages): page = pdf_reader.getPage(page_num) text += page.extractText() return text
腳本使用PyPDF2庫從PDF文件中提取文本,讀取PDF的每一頁并將提取的文本編譯成一個字符串。
10.2 合并多個PDF
# Python腳本,用于將多個PDF合并為一個PDF import PyPDF2 def merge_pdfs(input_paths, output_path): pdf_merger = PyPDF2.PdfMerger() for path in input_paths: with open(path, 'rb') as f: pdf_merger.append(f) with open(output_path, 'wb') as f: pdf_merger.write(f)
腳本將多個PDF文件合并為一個PDF文檔,這對于合并獨(dú)立的PDF報告、演示文稿或其他文檔到一個連貫的文件很有用。
10.3 添加密碼保護(hù)
# Python腳本,用于為PDF添加密碼保護(hù) import PyPDF2 def add_password_protection(input_path, output_path, password): with open(input_path, 'rb') as f: pdf_reader = PyPDF2.PdfFileReader(f) pdf_writer = PyPDF2.PdfFileWriter() for page_num in range(pdf_reader.numPages): page = pdf_reader.getPage(page_num) pdf_writer.addPage(page) pdf_writer.encrypt(password) with open(output_path, 'wb') as output_file: pdf_writer.write(output_file)
腳本為PDF文件添加密碼保護(hù),使用密碼加密PDF,確保只有那些知道正確密碼的人才能訪問內(nèi)容。
綜上所述,本文探索了不同領(lǐng)域的10個Python腳本,這些腳本可以完成自動化過程。從網(wǎng)頁抓取和網(wǎng)絡(luò)自動化到機(jī)器學(xué)習(xí)和物聯(lián)網(wǎng)設(shè)備控制,Python的通用性允許高效地自動化廣泛的過程。
自動化不僅可以節(jié)省時間和精力,還可以減少錯誤的風(fēng)險,提高整體效率。通過自定義和擴(kuò)展這些腳本,可以創(chuàng)建定制的自動化解決方案以滿足特定需求。
到此這篇關(guān)于10個常用python自動化腳本的文章就介紹到這了,更多相關(guān)python自動化腳本內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
在Python代碼中執(zhí)行Linux命令的詳細(xì)用法教程
在Python開發(fā)過程中,經(jīng)常需要執(zhí)行Linux系統(tǒng)命令來完成各種任務(wù),Python提供了多種方式來調(diào)用和執(zhí)行系統(tǒng)命令,本文將詳細(xì)介紹如何在Python代碼中執(zhí)行Linux命令,并結(jié)合實(shí)際案例來演示這些方法的使用,需要的朋友可以參考下2024-07-07如何利用Opencv實(shí)現(xiàn)圖像的加密解密
一般情況下,圖像的加密和解密過程是通過按位異或運(yùn)算實(shí)現(xiàn)的,下面這篇文章主要給大家介紹了關(guān)于如何利用Opencv實(shí)現(xiàn)圖像加密解密的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2021-10-10numpy給array增加維度np.newaxis的實(shí)例
今天小編就為大家分享一篇numpy給array增加維度np.newaxis的實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-11-11Python調(diào)用系統(tǒng)命令的四種方法詳解(os.system、os.popen、commands、subprocess)
這篇文章主要介紹了Python調(diào)用系統(tǒng)命令的四種方法(os.system、os.popen、commands、subprocess),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-03-03python實(shí)現(xiàn)簡單圖片物體標(biāo)注工具
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)簡單圖片物體標(biāo)注工具,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-03-03解決Linux系統(tǒng)中python matplotlib畫圖的中文顯示問題
這篇文章主要介紹了解決Linux系統(tǒng)中python matplotlib畫圖的中文顯示問題,需要的朋友可以參考下2017-06-06Python利用tkinter實(shí)現(xiàn)一個簡易番茄鐘的示例代碼
番茄鐘是番茄工作法使用的一個時間表,即選擇一個待完成的任務(wù),將番茄時間設(shè)為25分鐘,專注工作,中途不允許做任何與該任務(wù)無關(guān)的事,直到番茄時鐘響起,然后在紙上畫一個X短暫休息一下。本文用tkinter實(shí)現(xiàn)一個簡易番茄鐘,需要的可以參考一下2022-12-12Python將圖片批量從png格式轉(zhuǎn)換至WebP格式
最近因?yàn)楣ぷ餍枰パ芯苛讼聀ng的壓縮,發(fā)現(xiàn)轉(zhuǎn)換成webp格式可以小很多,下面給大家分享利用Python將圖片批量從png格式轉(zhuǎn)換至WebP格式的方法,下面來一起看看。2016-08-08