【30天玩转python】自动化与脚本编写

自动化与脚本编写

Python 因其简洁的语法和强大的标准库,非常适合用于自动化任务和编写脚本。通过编写 Python 脚本,可以自动执行重复性工作、简化日常任务、批量处理文件和数据,甚至管理服务器等。本篇文章将介绍如何使用 Python 编写自动化脚本,帮助读者提升工作效率。


1. 自动化任务的基本思路

自动化任务通常包含以下几个步骤:

  1. 明确任务:分析需要自动化的任务流程和目标。
  2. 选择工具:根据任务选择合适的库或工具。
  3. 编写脚本:通过 Python 实现任务逻辑。
  4. 调试与优化:调试脚本并提升效率。
  5. 定时执行:借助系统计划任务工具定时执行脚本。

2. 文件与目录操作自动化

文件操作是自动化任务中的常见需求,Python 的 osshutil 模块提供了对文件和目录的强大操作功能。

2.1 文件读取与写入

示例:读取和写入文本文件

# 打开文件并读取内容
with open('input.txt', 'r') as file:content = file.read()print(content)# 写入内容到文件
with open('output.txt', 'w') as file:file.write('这是写入的内容')
  • open():用于打开文件,'r' 表示读取模式,'w' 表示写入模式。
  • with 语句用于自动管理文件的打开和关闭。
2.2 目录操作

示例:创建、删除和遍历目录

import os
import shutil# 创建目录
os.mkdir('new_folder')# 删除目录
os.rmdir('new_folder')# 遍历目录下的所有文件
for root, dirs, files in os.walk('.'):for file in files:print(os.path.join(root, file))
  • os.mkdir():创建一个新目录。
  • os.rmdir():删除一个空目录。
  • os.walk():遍历指定目录下的所有文件和子目录。
2.3 文件复制与移动

示例:复制和移动文件

import shutil# 复制文件
shutil.copy('input.txt', 'copy_of_input.txt')# 移动文件
shutil.move('input.txt', 'archive/input.txt')
  • shutil.copy():复制文件。
  • shutil.move():移动文件或重命名文件。

3. 网络请求自动化

Python 的 requests 库提供了简便的方式来进行 HTTP 请求,适合自动化与 Web 应用交互或数据抓取。

3.1 安装 requests 库

使用以下命令安装 requests

pip install requests
3.2 发送 HTTP 请求

示例:发送 GET 请求

import requests# 发送 GET 请求
response = requests.get('https://jsonplaceholder.typicode.com/posts')# 输出响应内容
if response.status_code == 200:print(response.json())
  • requests.get():发送 HTTP GET 请求,获取指定 URL 的内容。
  • response.json():将响应内容解析为 JSON 格式。

示例:发送 POST 请求

import requests# 发送 POST 请求
data = {'name': 'Python', 'type': 'Script'}
response = requests.post('https://jsonplaceholder.typicode.com/posts', data=data)# 输出响应状态码
print(response.status_code)

4. 定时任务

Python 可以与操作系统的计划任务工具结合,定时执行自动化脚本。

4.1 Windows 下的任务计划
  1. 打开 Windows 任务计划程序。
  2. 创建一个新的任务,设置触发器为定时执行。
  3. 动作中选择 Python 可执行文件,并将脚本路径作为参数传入。
4.2 Linux 下的 Crontab

在 Linux 系统中,可以使用 crontab 来定时执行脚本。编辑 crontab 配置文件:

crontab -e

添加以下条目,每天凌晨 1 点运行 Python 脚本:

0 1 * * * /usr/bin/python3 /path/to/your_script.py

5. 自动化系统管理

在自动化系统管理任务中,Python 的 subprocess 模块能够执行系统命令,从而实现服务器管理、服务重启等操作。

5.1 使用 subprocess 执行命令

示例:执行系统命令

import subprocess# 执行 ls 命令
result = subprocess.run(['ls', '-l'], stdout=subprocess.PIPE)
print(result.stdout.decode('utf-8'))
  • subprocess.run():执行系统命令,返回结果。

6. 自动化邮件发送

Python 的 smtplib 模块可以用于自动化邮件发送任务。

6.1 示例:发送邮件
import smtplib
from email.mime.text import MIMEText# 设置邮件内容
msg = MIMEText('这是测试邮件内容', 'plain', 'utf-8')
msg['Subject'] = '自动化邮件'
msg['From'] = 'your_email@example.com'
msg['To'] = 'recipient@example.com'# 发送邮件
with smtplib.SMTP('smtp.example.com') as server:server.login('your_email@example.com', 'your_password')server.sendmail('your_email@example.com', ['recipient@example.com'], msg.as_string())

7. 数据处理自动化

Python 的 pandas 库擅长处理和分析大量数据,适合自动化数据处理任务。

7.1 安装 pandas

使用以下命令安装 pandas

pip install pandas
7.2 数据处理示例

示例:读取 CSV 文件并筛选数据

import pandas as pd# 读取 CSV 文件
data = pd.read_csv('data.csv')# 筛选出符合条件的数据
filtered_data = data[data['age'] > 30]# 输出筛选结果
print(filtered_data)

8. 小结

Python 为自动化任务提供了强大的工具和库,能够处理文件、网络请求、系统命令、邮件发送等各种场景。通过合理利用这些功能,可以大幅提升工作效率,并且通过计划任务工具能够实现任务的定时与自动化执行。

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

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

相关文章

【Python】Curdling:Python 包管理的高效工具

Curdling 是一个轻量级的 Python 包管理工具,旨在加速 Python 包的安装和管理流程。与传统的包管理工具(如 pip)相比,Curdling 更加注重性能优化和效率,特别是在处理大规模依赖项和项目构建时表现优异。它通过并行化的…

360° 镜头检测铝件内壁划痕与杂质:保障铝件内孔制造质量的精准方案

在铝件内孔制造的过程中,内壁的质量把控是至关重要的环节。制造过程中产生的碎屑残留以及划痕等问题,不仅会影响铝件的外观,更可能对其性能和使用寿命造成严重的损害。为了精准检测这些问题,我们提出了一套基于 360 镜头的检测方案…

3. 将GitHub上的开源项目导入(clone)到本地pycharm上——深度学习·科研实践·从0到1

目录 1. 在github上搜项目 (以OpenOcc为例) 2. 转移到码云Gitee上 3. 下载整个项目到本地 4. 在pycharm中打开项目 1. 在github上搜项目 (以OpenOcc为例) 把链接复制下来,转移到国内Gitee上,会更稳定 2. 转移到码云Gitee上 &…

深度学习-11

线性层及其它层介绍 归一化层 在深度学习中,归一化层(Normalization Layers)是神经网络中非常重要的一部分,它们有助于在训练过程中稳定网络,加速收敛,以及提高模型的泛化能力。以下是PyTorch框架中一些常…

6.1 微服务 服务发现 架构模式分类 应用实践

微服务 服务发现 架构模式分类 应用实践 目录概述需求: 设计思路实现思路分析1.类型-客户端发现2.类型-服务端服务发现3.工具-Eureka4.工具-Consul5.工具-zookper服务发现的挑战服务发现的最佳实践 参考资料和推荐阅读 Survive by day and develop by night. talk …

谷歌Gemini 1.5 AI模型升级:成本更低、性能更强、响应更快

AITOP100获悉,9月24日,谷歌谷歌Gemini 1.5 AI模型升级:成本更低、性能更强、响应更快对其旗下Gemini 1.5 AI模型进行了升级,推出了Gemini-1.5-Pro-002和Gemini-1.5-Flash-002两款新模型。这两款模型在成本、性能和响应速度方面均有…

在线PDF怎么转换成JPG图片?分享14种转换操作!

作为一名社畜,俺也经常要将PDF转换为图片格式! 如何进行快速转换,包括电脑端、在线端和手机端,今天俺就测评了50款工具,给你得出了下面这些渠道,不少也是免费的,相信对你有帮助哦! …

Spring - @Import注解

文章目录 基本用法源码分析ConfigurationClassPostProcessorConfigurationClass SourceClassgetImportsprocessImports处理 ImportSelectorImportSelector 接口DeferredImportSelector 处理 ImportBeanDefinitionRegistrarImportBeanDefinitionRegistrar 接口 处理Configuratio…

2-3树(2-3 Tree):原理、常见算法及其应用

目录 引言 2-3树的基本概念 常见算法 查找节点 插入节点 删除节点 2-3树的应用场景 1. 文件系统目录管理 应用原理 场景描述 2. 字典编码 应用原理 场景描述 总结 优势对比 自平衡特性 灵活的节点结构 高效的操作性能 简单的实现 广泛的应用场景 数据一致…

遥感图像分割

遥感图像分割是一种应用于遥感图像的计算机视觉技术,用于将图像划分为不同的区域,每个区域代表地表的不同特征,如水体、森林、城市区域等。这种分割帮助我们更好地理解和分析地球表面的变化,对于环境监测、城市规划、农业、灾害管…

AR技术在电商行业的应用及优势有哪些?

AR(增强现实)技术在电商行业的应用广泛且深入,为消费者带来了全新的购物体验,同时也为商家带来了诸多优势。以下是AR技术在电商行业的主要应用场景及其优势: 一、应用场景 1、虚拟商品展示与试用 家具AR摆放&#x…

济南站活动回顾|IvorySQL中的Oracle XML函数使用示例及技术实现原理

近日,由中国开源软件推进联盟PG分会 & 齐鲁软件园联合发起的“PostgreSQL技术峰会济南站”在齐鲁开源社举办。瀚高股份IvorySQL作为合作伙伴受邀参加此次活动。 瀚高股份IvorySQL技术工程师 向逍 带来「IvorySQL中的Oracle XML函数兼容」的议题分享。在演讲中&a…

前端vue-form表单的验证

form表单验证的完整步骤

二叉树的中序遍历(java)

概述 关于二叉树,我们都不陌生,许多基于递归的问题发起点都是一个二叉树的root节点。对于各种二叉树的问题,我们也是通过dfs进行求解。例如求二叉树的深度、最近公共祖先等 算法分析 关于二叉树的中序遍历,我们都知道应该先访…

【C++单调队列】1438. 绝对差不超过限制的最长连续子数组|1672

本文时间知识点 C队列、双向队列 LeetCode1438. 绝对差不超过限制的最长连续子数组 给你一个整数数组 nums ,和一个表示限制的整数 limit,请你返回最长连续子数组的长度,该子数组中的任意两个元素之间的绝对差必须小于或者等于 limit 。 如…

Flume实战--Flume中的选择器、自动容灾(故障转移)、负载均衡的详解与操作

本文详细介绍了Apache Flume的关键特性,包括选择器、拦截器、故障转移和负载均衡。选择器负责将数据分发到多个Channel,拦截器用于修改或丢弃Event。故障转移机制能够在Sink故障时自动切换,而负载均衡则在多个Sink间分配负载。文章还提供了自…

CANoe_DBC能够打开但是无法使用“BusType”

解决DBC文件在CAPL中调用问题:从CANdb到CAPL的顺畅过渡 在汽车电子和嵌入式系统开发中,DBC(Database CAN)文件作为描述CAN(Controller Area Network)通信协议的重要工具,广泛应用于网络设计、测…

工作日志:ruoyi-vue-plus echarts根据窗口大小变化

1、echarts根据窗口大小变化。 onMounted(() > {// 折线图type EChartsOption echarts.EChartsOption;var chartDom document.getElementById(chartDom)!;var myChart echarts.init(chartDom);var option: EChartsOption;option {grid: {left: 35,top: 10,bottom: 30,r…

jenkins部署Maven和NodeJS项目

在 Java 项目开发中,项目的编译、测试、打包等是比较繁琐的,属于重复劳动的工作,浪费人力和时间成本。以往开发项目时,程序员往往需要花较多的精力在引用 jar 包搭建项目环境上,跨部门甚至跨人员之间的项目结构都有可能…

1.8 软件业务测试

欢迎大家订阅【软件测试】 专栏,开启你的软件测试学习之旅! 文章目录 前言1 概述2 方法3 测试策略4 案例分析 前言 在软件开发生命周期中,业务测试扮演着至关重要的角色。本文详细讲解了业务测试的定义、目的、方法以及测试策略。 本篇文章参…