精選9個自動化任務的Python腳本精選

大家好,我是老鄧,今天我們來一起學習如何用Python進行一些常見的自動化操作,涉及文件處理、網絡交互等實用技巧。即使你沒有任何Python基礎也沒關系,我會用最通俗易懂的語言來講解。

1. 對目錄中的文件進行排序

import?osdef?sort_files(dir_path):"""對指定目錄下的文件進行排序。"""files?=?os.listdir(dir_path)??#?獲取目錄下所有文件和文件夾的名稱files.sort()??#?按文件名排序print(f"排序后的文件列表:{files}")#?示例用法
sort_files(".")??#?對當前目錄下的文件排序

?

2. 刪除空文件夾

import?os
import?shutildef?remove_empty_dirs(dir_path):"""遞歸刪除指定目錄下的空文件夾。"""for?item?in?os.listdir(dir_path):item_path?=?os.path.join(dir_path,?item)if?os.path.isdir(item_path):?#?判斷是否為文件夾if?not?os.listdir(item_path):?#判斷文件夾是否為空shutil.rmtree(item_path)??#?刪除空文件夾print(f"已刪除空文件夾:{item_path}")else:??#?如果子文件下還有文件夾則遞歸刪除remove_empty_dirs(item_path)#?示例用法(創建一個空文件夾進行測試)
os.makedirs("empty_dir",?exist_ok=True)
remove_empty_dirs(".")

?

3. 重命名多個文件

import?osdef?rename_files(dir_path,?prefix="new_"):"""批量重命名指定目錄下的文件。"""i?=?1for?filename?in?os.listdir(dir_path):if?os.path.isfile(os.path.join(dir_path,?filename)):?#?判斷是否為文件base,?ext?=?os.path.splitext(filename)??#?分離文件名和擴展名new_name?=?f"{prefix}{i}{ext}"os.rename(os.path.join(dir_path,?filename),?os.path.join(dir_path,?new_name))?#?重命名print(f"已將?{filename}?重命名為?{new_name}")i?+=?1#?示例用法(需要在目錄下創建一些測試文件)
#?create_test_files(".")??#?假設你創建了幾個測試文件
#?rename_files(".")

?

4. 從網站提取數據 (示例:提取標題)

import?requests
from?bs4?import?BeautifulSoupdef?extract_title(url):"""提取指定網頁的標題。"""try:response?=?requests.get(url)response.raise_for_status()??#?檢查請求是否成功soup?=?BeautifulSoup(response.content,?"html.parser")title?=?soup.title.string??#?獲取標題print(f"網頁標題:{title}")return?titleexcept?requests.exceptions.RequestException?as?e:print(f"請求出錯:{e}")return?None#?示例用法
extract_title("https://www.mayobang.com")

?

5. 批量下載網站圖片 (示例:下載指定網頁的所有圖片)

import?requests
import?os
from?bs4?import?BeautifulSoup
from?urllib.parse?import?urljoindef?download_images(url,?save_dir="images"):"""下載指定網頁的所有圖片。"""try:response?=?requests.get(url)response.raise_for_status()soup?=?BeautifulSoup(response.content,?"html.parser")os.makedirs(save_dir,?exist_ok=True)??#?創建保存目錄for?img?in?soup.find_all("img"):img_url?=?urljoin(url,?img.get("src"))??#?獲取圖片的完整URLtry:img_data?=?requests.get(img_url).contentfilename?=?os.path.join(save_dir,?os.path.basename(img_url))with?open(filename,?"wb")?as?f:f.write(img_data)print(f"已下載圖片:{img_url}")except?Exception?as?e:print(f"下載圖片出錯:{e}")except?Exception?as?e:print(f"出錯:{e}")#?示例用法?(請替換為實際的網址)
#?download_images("https://www.example.com/images")?

?

6. 自動提交表單 (示例:簡單表單提交)

import?requestsdef?submit_form(url,?data):"""自動提交表單。"""try:response?=?requests.post(url,?data=data)response.raise_for_status()print(f"表單提交成功:{response.text}")except?requests.exceptions.RequestException?as?e:print(f"表單提交失敗:{e}")#?示例用法(需要一個實際的表單提交URL和數據)
#?sample_data?=?{"name":?"老鄧",?"email":?"laodeng@example.com"}
#?submit_form("https://www.example.com/submit",?data=sample_data)

7. 計算文本文件中的字數

def?count_words(filepath):"""計算文本文件中的字數。"""try:with?open(filepath,?"r",?encoding="utf-8")?as?f:?#?使用utf-8編碼讀取文件content?=?f.read()word_count?=?len(content)print(f"文件?{filepath}?中的字數為:{word_count}")except?FileNotFoundError:print(f"文件未找到:{filepath}")#?示例用法?(需要創建一個測試文件?test.txt)
with?open("test.txt",?"w")?as?f:f.write("你好,世界!")count_words("test.txt")

?

8. 文件中的文本查找和替換

import?redef?find_and_replace(filepath,?pattern,?replacement):"""在文件中查找并替換文本。"""try:with?open(filepath,?"r+",?encoding="utf-8")?as?f:content?=?f.read()?#?讀取文件內容new_content?=?re.sub(pattern,?replacement,?content)?#用正則表達式替換f.seek(0)?#?將文件指針移到開頭f.write(new_content)?#?寫入替換后的內容f.truncate()?#?刪除多余內容print(f"已在文件?{filepath}?中完成替換。")except?FileNotFoundError:print(f"文件未找到:{filepath}")#?示例用法
find_and_replace("test.txt",?"世界",?"Python")

9. 生成隨機文本

import?random
import?stringdef?generate_random_text(length=10):"""生成指定長度的隨機文本。"""letters?=?string.ascii_letters?+?string.digits??#?包含字母和數字random_text?=?''.join(random.choice(letters)?for?i?in?range(length))print(f"生成的隨機文本:{random_text}")#?示例用法
generate_random_text(20)

?

總結: 今天的課程涵蓋了文件操作和網絡交互的多個自動化腳本,希望大家能動手實踐,加深理解。

熟練掌握這些技巧,能大大提高你的工作效率。請關注老鄧的Python入門教室,我們下次再見!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/64164.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/64164.shtml
英文地址,請注明出處:http://en.pswp.cn/web/64164.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

滑動窗口 + 算法復習

維護一個滿足條件的窗口大小&#xff0c;然后進行雙指針移動 1.最長子串 題目鏈接&#xff1a;1.最長子串 - 藍橋云課 #include<bits/stdc.h> #define int long long using namespace std; string s; int k; signed main() {int max_len0,left0;cin>>s>>k;…

PDF書籍《手寫調用鏈監控APM系統-Java版》第9章 插件與鏈路的結合:Mysql插件實現

本人閱讀了 Skywalking 的大部分核心代碼&#xff0c;也了解了相關的文獻&#xff0c;對此深有感悟&#xff0c;特此借助巨人的思想自己手動用JAVA語言實現了一個 “調用鏈監控APM” 系統。本書采用邊講解實現原理邊編寫代碼的方式&#xff0c;看本書時一定要跟著敲代碼。 作者…

關于Vue的子組件改變父組件傳來的值

一、組件直接傳值 大家都知道父子組件傳值的方案&#xff0c;有以下幾個&#xff0c;不再詳細敖述 Props&#xff1a;父組件向子組件傳遞數據 $emit&#xff1a;子組件通過自定義事件向父組件傳遞數據 .sync修飾符&#xff1a;一個方便且強大的工具&#xff0c;可以簡化父子組…

Flink的Watermark水位線詳解

一、Flink的時間語義 Flink有如下三種時間語義&#xff1a; Flink的三種時間語義-CSDN博客 在實際應用中&#xff0c;一般會采用事件時間語義。而正如前面所說的&#xff0c;事件時間語義需要等窗口的數據全部到齊了&#xff0c;才能進行窗口計算。那么&#xff0c;什么時候數…

ES學習Promise對象(九)

這里寫目錄標題 一、概念二、示例基本使用使用 Promise 對象封裝Ajaxthen() 方法catch() 方法 一、概念 簡單說就是一個容器&#xff0c;里面保存著某個未來才會結束的事件&#xff08;通常是一個異步操作&#xff09;的結果。Promise 是一個對象&#xff0c;Promise 提供統一…

Kibana:LINUX_X86_64 和 DEB_X86_64兩種可選下載方式的區別

最近需要在vm&#xff08;操作系統是 Ubuntu 22.04.4 LTS&#xff0c;代號 Jammy。這是一個基于 x86_64 架構的 Linux 發行版&#xff09;上安裝一個7.17.8版本的Kibana&#xff0c;并且不采用docker方式。 在下載的時候發現有以下兩個選項&#xff0c;分別是 LINUX_X86_64 和 …

CMake 構建項目并整理頭文件和庫文件

本文將介紹如何使用 CMake 構建項目、編譯生成庫文件&#xff0c;并將頭文件和庫文件整理到統一的目錄中以便在其他項目中使用。 1. 項目結構 假設我們正在構建一個名為 rttr 的開源庫&#xff0c;初始的項目結構如下&#xff1a; D:\WorkCode\Demo\rttr-master\|- src\ …

【FAQ】HarmonyOS SDK 閉源開放能力 — Vision Kit(2)

1.問題描述&#xff1a; 人臉活體檢測返回上一頁App由沉浸式變為非沉浸式多了上下安全區域。 解決方案&#xff1a; 檢測結束后需要自己去設置沉浸式配置。 2.問題描述&#xff1a; Vision Kit文字識別是本地識別&#xff0c;還是上傳至服務器&#xff0c;由服務器來識別文…

AIA - IMSIC之二(附IMSIC處理流程圖)

本文屬于《 RISC-V指令集基礎系列教程》之一,歡迎查看其它文章。 1 ???????通過IMSIC接收外部中斷的CSR 軟件通過《AIA - 新增的CSR》描述的CSR來訪問IMSIC。 machine level 的 CSR 與 IMSIC 的 machine level interrupt file 可相互互動;而 supervisor level 的 CSR…

Vue單頁應用的配置

前面通過幾篇文章了解并掌握了 Vue 項目構建及運行的前期工作 。接下來我們可以走進 Vue 項目的內部&#xff0c;一探其內部配置的基本構成。 1. 路由配置 由于 Vue 這類型的框架都是以一個或多個單頁構成&#xff0c;在單頁內部跳轉并不會重新渲染 HTML 文件&#xff0c;其路…

CocosCreator-引擎案例-TS:spine

工程1&#xff1a;LoadSpine&#xff1a;簡單加載spine資源 建立工程&#xff0c;在層級上建立一個空對象&#xff0c;改名spine 在spine上添加spine組件&#xff1a; 添加組件>渲染組件>spine 在spine上掛上腳本loadspine onLoad () {cc.resources.load(loadSpine/ali…

使用FreeNAS軟件部署ISCSI的SAN架構存儲(IP-SAN)練習題

一&#xff0c;實驗用到工具分別為&#xff1a; VMware虛擬機&#xff0c;安裝教程&#xff1a;VMware Workstation Pro 17 安裝圖文教程 FreeNAS系統&#xff0c;安裝教程&#xff1a;FreeNAS-11.2-U4.1安裝教程2024&#xff08;圖文教程&#xff09; 二&#xff0c;新建虛…

【ANGULAR網站開發】初始環境搭建

1. 初始化angular項目 1.1 創建angular項目 需要安裝npm和nodejs&#xff0c;這邊不在重新安裝 直接安裝最新版本的angular npm install -g angular/cli安裝指定大版本的angular npm install -g angular/cli181.2 啟動angular 使用idea啟動 控制臺啟動 ng serve啟動成功…

lua debug相關方法詳解

lua debug相關方法詳解 1. debug.debug()2. debug.getinfo(func | level [, what])3. debug.getlocal(func-or-level, localindex)4. debug.setlocal(level, local_number, value)5. debug.getupvalue(func, upvalue_index)6. debug.setupvalue(func, upvalue_index, value)7. …

《計算機網絡(第7版)-謝希仁》期末考試復習題和答案(總結整理)

目錄 前言&#xff1a; 一、選擇題。 二、填空題。 三、名詞解釋。 四、簡答題。 前言&#xff1a; 這個自動標題自己帶了序號&#xff0c;一開始想全部選項和題號都改過來的&#xff0c;結果一看一百多個全是&#xff0c;懶得改了 一、選擇題。 1、廣域網覆蓋的地理范圍…

【再談設計模式】享元模式~對象共享的優化妙手

一、引言 在軟件開發過程中&#xff0c;我們常常面臨著創建大量細粒度對象的情況&#xff0c;這可能會導致內存占用過高、性能下降等問題。享元模式&#xff08;Flyweight Pattern&#xff09;就像是一位空間管理大師&#xff0c;它能夠在不影響功能的前提下&#xff0c;有效地…

Milvus×EasyAi:如何用java從零搭建人臉識別應用

如何從零搭建一個人臉識別應用&#xff1f;不妨試試原生Java人工智能算法&#xff1a;EasyAi Milvus 的組合拳。 本文將使用到的軟件和工具包括&#xff1a; EasyAi&#xff1a;人臉特征向量提取Milvus&#xff1a;向量數據庫用于高效存儲和檢索數據。 01. EasyAi&#xff1a;…

NS3學習——tcpVegas算法代碼詳解(2)

NS3學習——tcpVegas算法代碼詳解&#xff08;1&#xff09;-CSDN博客 目錄 4.TcpVegas類中成員函數 (5) CongestionStateSet函數 (6) IncreaseWindow函數 1.檢查是否啟用 Vgas 2.判斷是否完成了一個“Vegas 周期” 2.1--if&#xff1a;判斷RTT樣本數量是否足夠 2.2--e…

GitLab 將停止為中國區用戶提供服務,60天遷移期如何應對? | LeetTalk Daily

“LeetTalk Daily”&#xff0c;每日科技前沿&#xff0c;由LeetTools AI精心篩選&#xff0c;為您帶來最新鮮、最具洞察力的科技新聞。 GitLab作為一個廣受歡迎的開源代碼托管平臺&#xff0c;近期宣布將停止服務中國大陸、澳門和香港地區的用戶提供服務。根據官方通知&#x…

華為實訓課筆記 2024 1223-1224

華為實訓 12/2312/24 12/23 [Huawei]stp enable --開啟STP display stp brief --查詢STP MSTID Port Role STP State Protection 實例ID 端口 端口角色 端口狀態 是否開啟保護[Huawei]display stp vlan xxxx --查詢制定vlan的生成樹計算結…