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

相关推荐
柊二三2 小时前
XML的简略知识点
xml·数据库·oracle
毛飞龙4 小时前
Python类(class)参数self的理解
python··self
魔尔助理顾问4 小时前
系统整理Python的循环语句和常用方法
开发语言·后端·python
每天敲200行代码4 小时前
MySQL 事务管理
数据库·mysql·事务
巴里巴气4 小时前
MongoDB索引及其原理
数据库·mongodb
国科安芯4 小时前
抗辐照芯片在低轨卫星星座CAN总线通讯及供电系统的应用探讨
运维·网络·人工智能·单片机·自动化
程序员勋勋15 小时前
Redis的String数据类型底层实现
数据库·redis·缓存
不修×蝙蝠5 小时前
MySQL 全详解:从入门到精通的实战指南
数据库·mysql·索引·最左前缀
颜颜yan_5 小时前
Python面向对象编程详解:从零开始掌握类的声明与使用
开发语言·redis·python
我的ID配享太庙呀7 小时前
Django 科普介绍:从入门到了解其核心魅力
数据库·后端·python·mysql·django·sqlite