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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/64164.shtml

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

相关文章

PDF书籍《手写调用链监控APM系统-Java版》第9章 插件与链路的结合:Mysql插件实现

本人阅读了 Skywalking 的大部分核心代码,也了解了相关的文献,对此深有感悟,特此借助巨人的思想自己手动用JAVA语言实现了一个 “调用链监控APM” 系统。本书采用边讲解实现原理边编写代码的方式,看本书时一定要跟着敲代码。 作者…

Kibana:LINUX_X86_64 和 DEB_X86_64两种可选下载方式的区别

最近需要在vm(操作系统是 Ubuntu 22.04.4 LTS,代号 Jammy。这是一个基于 x86_64 架构的 Linux 发行版)上安装一个7.17.8版本的Kibana,并且不采用docker方式。 在下载的时候发现有以下两个选项,分别是 LINUX_X86_64 和 …

CMake 构建项目并整理头文件和库文件

本文将介绍如何使用 CMake 构建项目、编译生成库文件,并将头文件和库文件整理到统一的目录中以便在其他项目中使用。 1. 项目结构 假设我们正在构建一个名为 rttr 的开源库,初始的项目结构如下: D:\WorkCode\Demo\rttr-master\|- src\ …

AIA - IMSIC之二(附IMSIC处理流程图)

本文属于《 RISC-V指令集基础系列教程》之一,欢迎查看其它文章。 1 ​​​​​​​通过IMSIC接收外部中断的CSR 软件通过《AIA - 新增的CSR》描述的CSR来访问IMSIC。 machine level 的 CSR 与 IMSIC 的 machine level interrupt file 可相互互动;而 supervisor level 的 CSR…

Vue单页应用的配置

前面通过几篇文章了解并掌握了 Vue 项目构建及运行的前期工作 。接下来我们可以走进 Vue 项目的内部,一探其内部配置的基本构成。 1. 路由配置 由于 Vue 这类型的框架都是以一个或多个单页构成,在单页内部跳转并不会重新渲染 HTML 文件,其路…

CocosCreator-引擎案例-TS:spine

工程1:LoadSpine:简单加载spine资源 建立工程,在层级上建立一个空对象,改名spine 在spine上添加spine组件: 添加组件>渲染组件>spine 在spine上挂上脚本loadspine onLoad () {cc.resources.load(loadSpine/ali…

使用FreeNAS软件部署ISCSI的SAN架构存储(IP-SAN)练习题

一,实验用到工具分别为: VMware虚拟机,安装教程:VMware Workstation Pro 17 安装图文教程 FreeNAS系统,安装教程:FreeNAS-11.2-U4.1安装教程2024(图文教程) 二,新建虚…

【ANGULAR网站开发】初始环境搭建

1. 初始化angular项目 1.1 创建angular项目 需要安装npm和nodejs,这边不在重新安装 直接安装最新版本的angular npm install -g angular/cli安装指定大版本的angular npm install -g angular/cli181.2 启动angular 使用idea启动 控制台启动 ng serve启动成功…

【再谈设计模式】享元模式~对象共享的优化妙手

一、引言 在软件开发过程中,我们常常面临着创建大量细粒度对象的情况,这可能会导致内存占用过高、性能下降等问题。享元模式(Flyweight Pattern)就像是一位空间管理大师,它能够在不影响功能的前提下,有效地…

Milvus×EasyAi:如何用java从零搭建人脸识别应用

如何从零搭建一个人脸识别应用?不妨试试原生Java人工智能算法:EasyAi Milvus 的组合拳。 本文将使用到的软件和工具包括: EasyAi:人脸特征向量提取Milvus:向量数据库用于高效存储和检索数据。 01. EasyAi:…

NS3学习——tcpVegas算法代码详解(2)

NS3学习——tcpVegas算法代码详解(1)-CSDN博客 目录 4.TcpVegas类中成员函数 (5) CongestionStateSet函数 (6) IncreaseWindow函数 1.检查是否启用 Vgas 2.判断是否完成了一个“Vegas 周期” 2.1--if:判断RTT样本数量是否足够 2.2--e…

GitLab 将停止为中国区用户提供服务,60天迁移期如何应对? | LeetTalk Daily

“LeetTalk Daily”,每日科技前沿,由LeetTools AI精心筛选,为您带来最新鲜、最具洞察力的科技新闻。 GitLab作为一个广受欢迎的开源代码托管平台,近期宣布将停止服务中国大陆、澳门和香港地区的用户提供服务。根据官方通知&#x…

华为实训课笔记 2024 1223-1224

华为实训 12/2312/24 12/23 [Huawei]stp enable --开启STP display stp brief --查询STP MSTID Port Role STP State Protection 实例ID 端口 端口角色 端口状态 是否开启保护[Huawei]display stp vlan xxxx --查询制定vlan的生成树计算结…

《Java源力物语》-3.空值猎手

~犬📰余~ “我欲贱而贵,愚而智,贫而富,可乎? 曰:其唯学乎” \quad 夜色渐深,在一处偏僻小径上,月光透过浓密的源力云层,在地面上投下斑驳的光影。String正独自练习着刚从…

科技云报到:人工智能时代“三大件”:生成式AI、数据、云服务

科技云报到原创。 就像自行车、手表和缝纫机是工业时代的“三大件”。生成式AI、数据、云服务正在成为智能时代的“新三大件”。加之全球人工智能新基建加速建设,成为了人类社会数字化迁徙的助推剂,让新三大件之间的耦合越来越紧密。从物理世界到数字世…

hiprint结合vue2项目实现静默打印详细使用步骤

代码地址是:vue-plugin-hiprint: hiprint for Vue2/Vue3 ⚡打印、打印设计、可视化设计器、报表设计、元素编辑、可视化打印编辑 本地安装包地址:electron-hiprint 发行版 - Gitee.com 1、先安装hipint安装包在本地 2、项目运行npm(socket.…

CUDA各种内存和使用方法

文章目录 1、全局内存2、局部内存3、共享内存3.1 静态共享内存3.2 动态共享内存 4、纹理内存5、常量内存6、寄存器内存7、用CUDA运行时API函数查询设备CUDA 错误检测 1、全局内存 特点:容量最大,访问延时最大,所有线程都可以访问。 线性内存…

Chapter 03 复合数据类型-1

1.列表 Python内置的一种有序、可变的序列数据类型; 列表的定义: [ ]括起来的逗号分隔的多个元素组成的序列 列表对象的创建: (1)直接赋值 >>> list1 []#创建一个空列表赋值给list1 >>> list…

【后端】LNMP环境搭建

长期更新各种好文,建议关注收藏! 本文近期更新完毕。 LNMPlinuxnginxmysqlphp 需要的资源 linux服务器 web服务软件nginx 对应的语言编译器代码文件 数据库mysql安装 tar.gz包或者命令行安装 进入root: sodu 或su mkdir path/{server,soft}…

基于PyQt5的UI界面开发——多界面切换

介绍 最初,因为课设的缘故,我只是想做一个通过按键进行切面切换而已,但是我看网上资料里面仅是语焉不详,让我困惑的很,但后面我通过摸索才发现这件事实在是太简单了,因此我想要记录下来。 本博客将介绍如…