大家好,我是老鄧,今天我們來一起學習如何用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入門教室,我們下次再見!