pywin32,一个超强的 Python 库!

6021f72c367485dfeb05c7c5eb84ac70.png

更多Python学习内容:ipengtao.com

大家好,今天为大家分享一个超强的 Python 库 - pywin32。

Github地址:https://github.com/mhammond/pywin32


在Python的世界里,有许多优秀的第三方库可以帮助开发者更轻松地处理各种任务。其中,pywin32库是一个特别引人注目的工具,它提供了对Windows API的完整访问,使得开发者能够利用Python来编写强大的Windows应用程序,从简单的脚本到复杂的桌面应用,pywin32都能胜任。

什么是pywin32库?

pywin32库是Python的一个扩展模块,它提供了对Windows API(应用程序编程接口)的访问,使得Python程序能够直接与Windows操作系统进行交互。这意味着可以利用Python来操作文件系统、注册表、服务,甚至是与Windows应用程序进行通信。

安装pywin32库

在开始使用pywin32之前,首先需要安装它。

可以通过pip来安装pywin32:

pip install pywin32

安装完成后,就可以开始探索pywin32的强大功能了。

基本功能

1. 操作文件系统

pywin32使得文件和文件夹的操作变得十分简单。

例如,可以轻松地创建、复制、删除文件或文件夹:

import os
import win32file# 创建文件夹
os.mkdir("C:\\test_folder")# 复制文件
win32file.CopyFile("source.txt", "destination.txt", False)# 删除文件夹
os.rmdir("C:\\test_folder")

2. 操作注册表

通过pywin32,可以方便地读取、写入和删除Windows注册表中的键和值:

import win32api# 读取注册表键值
value = win32api.RegQueryValueEx(win32con.HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Run", 0, win32con.REG_SZ)# 写入注册表键值
win32api.RegSetValueEx(win32con.HKEY_CURRENT_USER, "Software\\MyApp", 0, win32con.REG_SZ, "C:\\MyApp\\myapp.exe")# 删除注册表键值
win32api.RegDeleteKey(win32con.HKEY_CURRENT_USER, "Software\\MyApp")

3. 与Windows服务交互

pywin32也提供了与Windows服务进行交互的功能。

可以启动、停止、暂停和继续服务,甚至查询服务的状态:

import win32serviceutil# 启动服务
win32serviceutil.StartService("MyService")# 停止服务
win32serviceutil.StopService("MyService")# 暂停服务
win32serviceutil.PauseService("MyService")# 继续服务
win32serviceutil.ResumeService("MyService")# 查询服务状态
status = win32serviceutil.QueryServiceStatus("MyService")

应用场景及示例代码

1. 自动化任务

pywin32可以用于编写自动化脚本,执行各种Windows操作系统相关的任务。比如,可以编写一个脚本来定时清理系统临时文件或者备份重要数据到指定目录。

import os
import shutil# 清理临时文件
temp_folder = os.path.join(os.environ["TEMP"], "temp_folder")
if os.path.exists(temp_folder):shutil.rmtree(temp_folder)

2. Windows应用程序控制

通过pywin32,可以控制已经运行的Windows应用程序,比如关闭指定的程序窗口或者向特定程序发送命令。

import win32gui# 关闭记事本程序
notepad_handle = win32gui.FindWindow(None, "Untitled - Notepad")
if notepad_handle != 0:win32gui.PostMessage(notepad_handle, win32con.WM_CLOSE, 0, 0)

3. 监控系统状态

可以编写一个脚本来监控系统的状态,比如CPU、内存的占用情况,或者检查系统中是否运行了特定的进程。

import psutil# 获取CPU占用率
cpu_percent = psutil.cpu_percent()# 获取内存占用率
memory_percent = psutil.virtual_memory().percentprint("CPU占用率:{}%".format(cpu_percent))
print("内存占用率:{}%".format(memory_percent))

总结

通过本文,了解了pywin32库的基本功能和使用方法,并通过示例展示了如何在实际应用中使用pywin32。pywin32为开发者提供了在Windows平台上进行高效编程的能力,可以更轻松地处理各种与Windows操作系统相关的任务。如果是一个Python开发者,并且需要与Windows进行交互,那么pywin32绝对是你不可或缺的利器之一。无论是操作文件系统、注册表,还是与Windows服务交互,pywin32都能轻松完成任务。开始使用pywin32,让Python程序在Windows平台上发挥更大的作用吧!

如果你觉得文章还不错,请大家 点赞、分享、留言 下,因为这将是我持续输出更多优质文章的最强动力!


如果想要系统学习Python、Python问题咨询,或者考虑做一些工作以外的副业,都可以扫描二维码添加微信,围观朋友圈一起交流学习。

befb417ddae3a17078c671263ac76f34.gif

我们还为大家准备了Python资料和副业项目合集,感兴趣的小伙伴快来找我领取一起交流学习哦!

22db389e160e27aa64888ba2742dba3d.jpeg

往期推荐

历时一个月整理的 Python 爬虫学习手册全集PDF(免费开放下载)

Python基础学习常见的100个问题.pdf(附答案)

学习 数据结构与算法,这是我见过最友好的教程!(PDF免费下载)

Python办公自动化完全指南(免费PDF)

Python Web 开发常见的100个问题.PDF

肝了一周,整理了Python 从0到1学习路线(附思维导图和PDF下载)

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

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

相关文章

【性能】后台与黑屏

目录 现象观察 调整应用的电池策略 现象观察 切换到后台, 一个心跳期间,就会发close socket 直接黑屏,没有收到任何消息,直接到onclose,然后有离线触发 也到时间。 调整应用的电池策略 修改成“无限制”后,就不会断…

C#面:简单介绍 序列化 和 反序列化

序列化: 是将对象转换为可保持或可传输的形式的过程。 .NET 具有以下序列化技术: 二进制序列化保持类型保真,这对于多次调用应用程序时保持对象状态非常有用。 例如,通过将对象序列化到剪贴板,可在不同的应用程序之…

Linxu自动化构建工具make/Makefile究竟时什么?

Linxu自动化构建工具make/Makefile究竟时什么? 一、简介二、makefile文件制作(简洁版)2.1 源文件2.2 makefile如何制作2.2.1 依赖关系、依赖方法2.2.3 伪目标(清理文件资源) 三、make/Makefile自动化原理3.1 伪目标为什…

SpringBoot+Vue实现el-table表头筛选排序(附源码)

👨‍💻作者简介:在笑大学牲 🎟️个人主页:无所谓^_^ ps:点赞是免费的,却可以让写博客的作者开心好几天😎 前言 后台系统对table组件的需求是最常见的,不过element-ui的el…

Grpc项目集成到java方式调用实践

背景:由于项目要对接到grcp 的框架,然后需要对接老外的东西,还有签名和证书刚开始没有接触其实有点懵逼。 gRPC 是由 Google 开发的高性能、开源的远程过程调用(RPC)框架。它建立在 HTTP/2 协议之上,使用 …

D7805 正电压稳压电路应用——体积小,成本低,性能好

D7805 构成的 5V 稳压电源为输出电压5V,输出电流 1000mA 的稳压电源它由滤波电容 C1,C3,防止自激电容 C2、C3 和一只固定三端稳压器(7805)后级加 LC 滤波极为简洁方便地搭成,输入直流电压范围为 7~35V,此直流电压经过D…

yolov8-更换卷积模块-ContextGuidedBlock_Down

源码解读 class ContextGuidedBlock_Down(nn.Module):"""the size of feature map divided 2, (H,W,C)---->(H/2, W/2, 2C)"""def __init__(self, nIn, dilation_rate2, reduction16):"""args:nIn: the channel of input fea…

Hack The Box-Bizness

目录 信息收集 nmap dirsearch WEB Get shell 提权 get user flag get root flag 信息收集 nmap 端口扫描┌──(root㉿ru)-[~/kali/hackthebox] └─# nmap -p- 10.10.11.252 --min-rate 10000 -oA port Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-03-04 1…

实测VLLM的加速效果

为了测试vllm的并行加速效果,采用同样的5个提问,编写两个不同的python脚本,分别是compare_vllm.py和compare_chatglm3.py,其中compare_vllm.py采用vllm加速。 服务器参数: 操作系统ubuntu 22.04CPUi7 14700k内存dd5 …

hive中常见参数优化总结

1.with as 的cte优化,一般开发中习惯使用with as方便阅读,但如果子查询结果在下游被多次引用,可以使用一定的参数优化手段减少表扫描次数 默认set hive.optimize.cte.materialize.threshold-1;不自动物化到内存,一般可以设置为 se…

力扣 第 387 场周赛 解题报告 | 珂学家 | 离散化树状数组 + 模拟场

前言 整体评价 手速场模拟场,思路和解法都蛮直接的。 所以搞点活 如果T2,如果不固定左上角,批量查询某个点为左上角,求满足总和 ≤ k \le k ≤k的子矩阵个数 如果T2,如果不固定左上角,求总和 ≤ k \le k…

Spring的Bean的生命周期 | 有图有案例

Spring的Bean的生命周期 Spring的Bean的生命周期整体过程实例化初始化服务销毁循环依赖问题 完整生命周期演示 Spring的Bean的生命周期 Spring Bean的生命周期:从Bean的实例化之后,通过反射创建出对象之后,到Bean称为一个完整的对象&#xf…

EXPLAIN:mysql 执行计划分析详解

目录 EXPLAIN命令 查看执行计划 分析执行计划 优化查询 EXPLAIN中的 type 列类型 在MySQL中,你可以使用EXPLAIN命令来生成查询的执行计划。EXPLAIN命令可以显示MySQL如何使用键来处理SELECT和DELETE语句,以及INSERT或UPDATE语句的WHERE子句。这对于…

SRS Stack提供的鉴权、私人直播间、多平台转播、录制等高级功能的具体使用方法是什么?

SRS Stack提供的鉴权、私人直播间、多平台转播、录制等高级功能的具体使用方法是什么? 鉴权功能:SRS Stack支持通过系统配置中的OpenAPI获取Bearer鉴权,并可以尝试HTTP API。用户可以通过点击网页上的按钮请求HTTP API,或者使用cu…

快上车:什么是人工智能?人工智能和普通程序的区别

什么是人工智能? 虽然AI历史很悠久,上个世纪50年代就有各种概念,但是发展很慢。第一次对人类的冲击就是1997年IBM深蓝击败国际象棋世界冠军,引起了人们的广泛关注,之后又销声匿迹。突然间2016人工智能alphaGO战胜了围…

具身智能计算系统,机器人时代的 Android | 新程序员

【导读】具身智能作为一种新兴的研究视角和方法论,正在刷新我们对智能本质及其发展的理解:传统的 AI 模型往往将智能视为一种独立于实体存在的抽象能力,而具身智能则主张智能是实体与其环境持续互动的结果。 本文深度剖析了具身智能计算系统…

【CSS】初学了解Grid布局

目录 什么是Grid布局如何开始使用Grid布局Grid容器的属性Grid项目的属性举个例子 什么是Grid布局 Grid布局是一种二维的布局系统,它允许我们在水平和垂直方向上同时控制网格中的项目位置。通过将页面划分为行和列,我们可以轻松地创建出复杂的布局结构&a…

程序员如何选择职业赛道?

一、自我评估与兴趣探索 程序员选择职业赛道时,可以考虑以下几个关键因素: 1、兴趣与热情:首先要考虑自己的兴趣和热情,选择符合个人喜好和激情的领域,能够激励自己持续学习和进步。 2、技术能力&am…

2.python72变笔记(自用未修改版)

以前写的python笔记 1.二进制与字符编码 #8bit(位)1byte(字节) #1024byte 1KB 千字节 #1024KB 1MB 兆字节 #1024MB 1TB 太字节 print(chr(0b100111001010000)) print(ord("陈")) #ord 十进制 #无论英语还是汉语在计算…

mysql5.7配置主从

原理: MySQL主从复制的工作原理如下:1. 主服务器产生Binlog日志当主服务器的数据库发生数据修改操作时,如INSERT、UPDATE、DELETE语句执行,主服务器会记录这些操作的日志信息到二进制日志文件中。2. 从服务器读取Binlog日志 从服务器会向主服务器发送请求,主服务器把…