精选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,一经查实,立即删除!

相关文章

滑动窗口 + 算法复习

维护一个满足条件的窗口大小&#xff0c;然后进行双指针移动 1.最长子串 题目链接&#xff1a;1.最长子串 - 蓝桥云课 #include<bits/stdc.h> #define int long long using namespace std; string s; int k; signed main() {int max_len0,left0;cin>>s>>k;…

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

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

关于Vue的子组件改变父组件传来的值

一、组件直接传值 大家都知道父子组件传值的方案&#xff0c;有以下几个&#xff0c;不再详细敖述 Props&#xff1a;父组件向子组件传递数据 $emit&#xff1a;子组件通过自定义事件向父组件传递数据 .sync修饰符&#xff1a;一个方便且强大的工具&#xff0c;可以简化父子组…

Flink的Watermark水位线详解

一、Flink的时间语义 Flink有如下三种时间语义&#xff1a; Flink的三种时间语义-CSDN博客 在实际应用中&#xff0c;一般会采用事件时间语义。而正如前面所说的&#xff0c;事件时间语义需要等窗口的数据全部到齐了&#xff0c;才能进行窗口计算。那么&#xff0c;什么时候数…

ES学习Promise对象(九)

这里写目录标题 一、概念二、示例基本使用使用 Promise 对象封装Ajaxthen() 方法catch() 方法 一、概念 简单说就是一个容器&#xff0c;里面保存着某个未来才会结束的事件&#xff08;通常是一个异步操作&#xff09;的结果。Promise 是一个对象&#xff0c;Promise 提供统一…

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

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

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

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

【FAQ】HarmonyOS SDK 闭源开放能力 — Vision Kit(2)

1.问题描述&#xff1a; 人脸活体检测返回上一页App由沉浸式变为非沉浸式多了上下安全区域。 解决方案&#xff1a; 检测结束后需要自己去设置沉浸式配置。 2.问题描述&#xff1a; Vision Kit文字识别是本地识别&#xff0c;还是上传至服务器&#xff0c;由服务器来识别文…

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 项目的内部&#xff0c;一探其内部配置的基本构成。 1. 路由配置 由于 Vue 这类型的框架都是以一个或多个单页构成&#xff0c;在单页内部跳转并不会重新渲染 HTML 文件&#xff0c;其路…

CocosCreator-引擎案例-TS:spine

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

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

一&#xff0c;实验用到工具分别为&#xff1a; VMware虚拟机&#xff0c;安装教程&#xff1a;VMware Workstation Pro 17 安装图文教程 FreeNAS系统&#xff0c;安装教程&#xff1a;FreeNAS-11.2-U4.1安装教程2024&#xff08;图文教程&#xff09; 二&#xff0c;新建虚…

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

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

lua debug相关方法详解

lua debug相关方法详解 1. debug.debug()2. debug.getinfo(func | level [, what])3. debug.getlocal(func-or-level, localindex)4. debug.setlocal(level, local_number, value)5. debug.getupvalue(func, upvalue_index)6. debug.setupvalue(func, upvalue_index, value)7. …

《计算机网络(第7版)-谢希仁》期末考试复习题和答案(总结整理)

目录 前言&#xff1a; 一、选择题。 二、填空题。 三、名词解释。 四、简答题。 前言&#xff1a; 这个自动标题自己带了序号&#xff0c;一开始想全部选项和题号都改过来的&#xff0c;结果一看一百多个全是&#xff0c;懒得改了 一、选择题。 1、广域网覆盖的地理范围…

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

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

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

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

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

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

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

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