大家好,我是老邓,今天我们来一起学习如何用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入门教室,我们下次再见!