当前位置: 首页 > article >正文

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


http://www.kler.cn/a/453912.html

相关文章:

  • 地理数据库Telepg面试内容整理-请描述空间索引的基本概念,如何使用它提高查询性能
  • 结合大语言模型的异常检测方法研究
  • Java全栈项目 - 学生竞赛管理平台
  • Linux:alias别名永久有效
  • 变频器在电动机的节能原理是什么?
  • 【杂谈】-现代汽车有哪些传感器
  • docker仓库用户认证
  • sqli-labs关卡记录12
  • [python SQLAlchemy数据库操作入门]-11.面向对象方式操作股票数据
  • Ubuntu中 Nginx 虚拟主机设置指南
  • 【Win11】安装 VMware17 和 Ubuntu
  • 连接串口设备后鼠标出现乱跳
  • 交易生态全解析:聚合交易平台 交易策略平台 技术策略提供方 交易机器人平台 资管、支付平台 社交交易社区 跟单平台在饼圈量化的定义和关系是怎样的?
  • Docker 安装mysql ,redis,nacos
  • Linux挂在新硬盘
  • DP动态规划+贪心题目汇总
  • 24 go语言(golang) - gorm框架安装及使用案例详解
  • 什么是ondelete cascade以及使用sqlite演示ondelete cascade使用案例
  • apisix的hmac-auth认证
  • 【每日学点鸿蒙知识】图片控件对齐、上架的应用无法拉起应用详情页、RotateOptions配置、签名配置问题、弹框背景色
  • Leetcode 200 Number of Islands
  • c++最大公约数和最小公倍数的深入剖析
  • Oracle Database 23ai 中的DBMS_HCHECK
  • AWS Certified AI Practitioner 自学考试心得
  • 关于FPGA的IO三引脚形式
  • 【YOLO】(基础篇一)YOLO介绍