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

news2024/12/25 15:50:33

大家好,我是老邓,今天我们来一起学习如何用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.coloradmin.cn/o/2265360.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

分体空调智能控制系统

空调是建筑中的用能大户,据统计,空调能耗占建筑总能耗的60%,空调节能作为建筑节能减排的重要组成部分,针对空调的监测和控制尤为重要。随着双碳战略的深入推进、数字化技术的快速发展、人们节能意识普遍增强,对空调用电…

Axure RP 8安装(内带安装包)

通过网盘分享的文件:Axure8.0.zip 链接: https://pan.baidu.com/s/195_qy2iiDIcYG4puAudScA 提取码: 6xt8 --来自百度网盘超级会员v1的分享 勾选I Agree 安装完成

如何在centos系统上挂载U盘

在CentOS上挂载NTFS格式的U盘,需要执行一系列步骤,包括识别U盘设备、安装必要的软件、创建挂载点,并最终挂载U盘。以下是在CentOS上挂载NTFS格式U盘的详细步骤: 一、准备工作 确认CentOS版本: 确保你的CentOS系统已经安装并正常运行。不同版本的CentOS在命令和工具方面可能…

闯关leetcode——3158. Find the XOR of Numbers Which Appear Twice

大纲 题目地址内容 解题代码地址 题目 地址 https://leetcode.com/problems/find-the-xor-of-numbers-which-appear-twice/description/ 内容 You are given an array nums, where each number in the array appears either once or twice. Return the bitwise XOR of all …

zabbix“专家坐诊”第270期问答

问题一 Q:请问,zabbix 6.0.26 是否支持在 Monitoring|Latest data页面仅通过Tags筛选主机?我尝试了下,发现无法筛选到。 A:这里是标记 要选主机正在旁边选。 Q:我只想筛选tag为xxx的主机,不限定…

Git使用经历

目录 1、先创建文件夹 2、仓库初始化 3、配置gitee用户名和密码 4、克隆指定仓库的中指定分支到本地仓库 5、查看当前所在分支、切换分支 6、查看状态,判断是否有修改 7、把更新的内容添加到缓存区 8、把缓存区的数据提交 9、把数据推送到远程仓库 10、把…

蓝牙协议——音乐启停控制

手机播放音乐 手机暂停音乐 耳机播放音乐 耳机暂停音乐

【Web】2024“国城杯”网络安全挑战大赛决赛题解(全)

最近在忙联通的安全准入测试,很少有时间看CTF了,今晚抽点时间回顾下上周线下的题(期末还没开始复习😢) 感觉做渗透测试一半的时间在和甲方掰扯&水垃圾洞,没啥惊喜感,还是CTF有意思 目录 Mountain ez_zhuawa 图…

信奥赛四种算法描述

#include <iostream> #include <iomanip> using namespace std;// 使用unsigned long long类型来尽量容纳较大的结果&#xff0c;不过实际上这个数值极其巨大&#xff0c;可能最终仍会溢出 // 更好的方式可以考虑使用高精度计算库&#xff08;如GMP等&#xff09;来…

12.19问答解析

概述 某中小型企业有四个部门&#xff0c;分别是市场部、行政部、研发部和工程部&#xff0c;请合理规划IP地址和VLAN&#xff0c;实现企业内部能够互联互通&#xff0c;同时要求市场部、行政部和工程部能够访问外网环境(要求使用OSPF协议)&#xff0c;研发部不能访问外网环境…

Docker部署Sentinel

一、简介 是什么&#xff1a;面向分布式、多语言异构化服务架构的流量治理组件 能干嘛&#xff1a;从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性 官网地址&#xff1a;https://sentinelguard.io/zh-c…

LabVIEW如何学习FPGA开发

FPGA&#xff08;现场可编程门阵列&#xff09;开发因其高性能、低延迟的特点&#xff0c;在实时控制和高速数据处理领域具有重要地位。LabVIEW FPGA模块为开发者提供了一个图形化编程平台&#xff0c;降低了FPGA开发的门槛。本篇文章将详细介绍LabVIEW FPGA开发的学习路径&…

基于图注意力网络的两阶段图匹配点云配准方法

Two-stage graph matching point cloud registration method based on graph attention network— 基于图注意力网络的两阶段图匹配点云配准方法 从两阶段点云配准方法中找一些图匹配的一些灵感。文章提出了两阶段图匹配点云配准网络&#xff08;TSGM-Net&#xff09; TSGM-Ne…

U9多组织的退货单不能拉单找不到退货单

培训没有估好吧。参数是顾问亲自操刀去做的。当时事情又多&#xff0c;参加会议都是缺席的。财务做应收单拉单时&#xff0c;说有退货单找不到。也就是查询的条件&#xff08;逻辑&#xff09;不对嘛。U9的参数查询条件太多&#xff0c;逻辑复杂&#xff0c;一时真的分析不出来…

树莓派换源

查询自己版本&#xff1a; lsb_release -a bullseye可以理解为树莓派的系统代号&#xff08;10&#xff0c;11&#xff0c;12都不同&#xff0c;一定要看好自己系统是什么版本&#xff09; 查询架构 uname -a aarch64的地方就是代表系统架构的&#xff0c;我的是aarch64的架…

如何安全获取股票实时数据API并在服务器运行?

以下是安全获取股票实时数据 API 并在服务器运行的方法&#xff1a; 选择合适的券商或交易平台 评估自身需求&#xff1a;明确自己的交易策略、交易品种、交易频率等需求&#xff0c;以及对 股票api 的功能、性能、稳定性等方面的要求。调研券商或平台&#xff1a;了解不同券商…

MONI后台管理系统-swagger3(springdoc-openapi)集成

springdoc-openapi Java 库有助于使用 Spring Boot 项目自动生成 API 文档。springdoc-openapi 通过在运行时检查应用程序来根据 Spring 配置、类结构和各种注释推断 API 语义。 该库会自动生成 JSON/YAML 和 HTML 格式的页面文档。生成的文档可以使用swagger-api注释进行补充。…

vue中proxy代理配置(测试二)

接口地址&#xff1a;https://ss.dd.dd.d.cn:9006/thirdist/portalApi/biz-api/eemp/supervision/v1//getPeiCountData?batch2&cent0 1、配置一&#xff08;代理没起作用&#xff09; &#xff08;1&#xff09;设置baseURL为https://ss.dd.dd.d.cn:9006 &#xff08;2&am…

软件项目标书参考,合同拟制,开发合同制定,开发协议,标书整体技术方案,实施方案,通用套用方案,业务流程,技术架构,数据库架构全资料下载(原件)

1、终止合同协议书 2、项目合作协议 3、合同交底纪要 4、合同管理台账 软件资料清单列表部分文档清单&#xff1a;工作安排任务书&#xff0c;可行性分析报告&#xff0c;立项申请审批表&#xff0c;产品需求规格说明书&#xff0c;需求调研计划&#xff0c;用户需求调查单&…

《鸣潮》游戏运行时弹出“xinput1_3.dll文件缺失”错误的处理方法,“xinput1_3.dll文件缺失”详解!

一、xinput1_3.dll文件的重要性 xinput1_3.dll是DirectX组件中的一个重要文件&#xff0c;它负责处理与Xbox 360控制器相关的输入功能。尽管《鸣潮》可能并不直接依赖于Xbox控制器&#xff0c;但许多现代游戏和应用程序都会调用这个DLL文件来处理各种输入设备的功能。因此&…