精选9个自动化任务的Python脚本精选

大家好,我是老邓,今天我们来一起学习如何用Python进行一些常见的自动化操作,涉及文件处理、网络交互等实用技巧。即使你没有任何Python基础也没关系,我会用最通俗易懂的语言来讲解。

  1. 对目录中的文件进行排序

    import os

    def sort_files(dir_path):
    """对指定目录下的文件进行排序。"""
    files = os.listdir(dir_path) # 获取目录下所有文件和文件夹的名称
    files.sort() # 按文件名排序
    print(f"排序后的文件列表:{files}")

    示例用法

    sort_files(".") # 对当前目录下的文件排序

  2. 删除空文件夹

    import os
    import shutil

    def 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 os

    def rename_files(dir_path, prefix="new_"):
    """批量重命名指定目录下的文件。"""
    i = 1
    for 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 BeautifulSoup

    def 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 title
    
     except 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 urljoin

    def 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"))  # 获取图片的完整URL
           try:
             img_data = requests.get(img_url).content
             filename = 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 requests

    def 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 re

    def 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 string

    def 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入门教室,我们下次再见!

相关推荐
VisionDataLab2 小时前
多SKU混产视觉换型瓶颈根治:免重教、免重调的德成嵌入式视觉配方架构与工程落地
自动化·视觉检测
鲸能云2 小时前
户用光伏电费自动划转系统实践:从人工对账到规模化结算的技术路径
自动化·资产管理·分布式光伏·户用光伏·电费结算
Patrick在香港3 小时前
Claude Prompt 香港场景:公文里「今日」落在 6 个日历日上,「翌日」锚错了 5 天
python·自然语言处理·正则表达式·claude·数据清洗
我要见SA姐13 小时前
告别 Copilot?Codex 本地化部署指南
运维·数据库·机器学习·oracle·回归
YsyaaabB4 小时前
Python 数值分析
python
阿洛学长4 小时前
计算机二级 Python 基本操作题(15 分)真题笔记(0101 ~ 1903 全套)
python·pycharm
xcLeigh4 小时前
聊聊国产化替换:好用数据迁移工具KDMS怎么帮咱们搞定评估难
数据库·sql·数据迁移·kes·kdms
Elastic 中国社区官方博客4 小时前
列式存储并不等同于列式数据库。Columnar 模式为 Elasticsearch 带来了什么
大数据·运维·数据库·elasticsearch·搜索引擎
weixin199701080164 小时前
[特殊字符]️《二手ERP对接电商平台的总体方案:统一数据模型 + 事件驱动 + 灰度上线6原则》(附Python源码)
大数据·python
滚雪球~5 小时前
量化交易 防止Windows电脑自动更新并重启
python·量化