当前位置: 首页 > news >正文

Python精选200Tips:126-130

Those who know are not as good as those who love, and those who love are not as good as those who enjoy

  • 126 PyInstaller - 将 Python 程序打包成独立可执行文件的工具
        • 示例:图像变为灰度图像
          • 项目结构
          • 代码文件
          • 打包步骤
          • 运行可执行文件
  • 127 PyYAML - YAML 解析和生成工具
        • 示例:读取配置内容
          • 项目结构
          • 代码文件
          • 运行结果
  • 128 Pydub、Librosa - 音频处理、分析库
        • 示例1: 分析音乐旋律
        • 示例2: 音频频谱图可视化
        • 示例3: 音频波形可视化
  • 129 Pygame - 游戏开发库
        • 示例1: 五子棋
        • 示例2: 贪吃蛇
        • 示例3: 数独
  • 130 MoviePy- 视频编辑和处理库
        • 剪辑视频
        • 合成视频
        • 添加文本
        • 音频处理

玩中学Python

运行系统:macOS Sonoma 14.6.1
Python编译器:PyCharm 2024.1.4 (Community Edition)
Python版本:3.12

往期链接:

1-56-1011-2021-3031-4041-50
51-60:函数61-70:类71-80:编程范式及设计模式
81-90:Python编码规范91-100:Python自带常用模块-1
101-105:Python自带模块-2106-110:Python自带模块-3
111-115:Python常用第三方包-频繁使用116-120:Python常用第三方包-深度学习
121-125:Python常用第三方包-爬取数据

本文只介绍每个包主要做什么及一些比较经典的示例。对于包的进一步学习,推荐参考对应包的官方文档。

126 PyInstaller - 将 Python 程序打包成独立可执行文件的工具

pyinstaller版本6.10.0,官方文档

PyInstaller 是一个用于将 Python 程序打包成独立可执行文件的工具。它支持 Windows、macOS 和 Linux,能够将 Python 代码及其依赖项打包在一起,使得用户无需安装 Python 环境即可运行你的程序。主要特点:

  • 跨平台:支持多种操作系统。
  • 自动分析依赖:自动识别并包含所需的库和模块。
  • 支持多种格式:可以生成单个可执行文件或包含多个文件的目录。
  • 可自定义:允许用户自定义打包过程,例如添加图标或数据文件。

创建一个简单的图像处理应用,允许用户加载图像并将其转换为灰度图像。这个应用将使用 Pillow 库进行图像处理。

示例:图像变为灰度图像
项目结构

在这里插入图片描述

代码文件

main.py

import sys
import os
from PIL import Imagedef convert_to_grayscale(image_path, output_path):"""将图像转换为灰度并保存"""img = Image.open(image_path)gray_img = img.convert("L")gray_img.save(output_path)print(f"Saved grayscale image to {output_path}")def main():if len(sys.argv) != 3:print("Usage: main.py <input_image_path> <output_image_path>")sys.exit(1)input_image = sys.argv[1]output_image = sys.argv[2]if not os.path.exists(input_image):print(f"Input file does not exist: {input_image}")sys.exit(1)convert_to_grayscale(input_image, output_image)if __name__ == "__main__":main()

requirements.txt

Pillow

example.icns

打包后的图标,widows系统是.ico文件,macos系统是.icns文件

在这里插入图片描述

打包步骤

打开终端,并导航到 image_processor 目录

 cd /Users/anfany/Documents/OneLinePython/image_processor

运行 PyInstaller

pyinstaller --clean --windowed --onefile --icon=/Users/anfany/Documents/OneLinePython/image_processor/example.icns --name=ImageProcessor main.py

在 Windows 上,--add-data 的分隔符为 ;,而在 macOS/Linux 上应使用 :。

……
14698 INFO: Building EXE from EXE-00.toc completed successfully.
14701 INFO: checking BUNDLE
14701 INFO: Building BUNDLE because BUNDLE-00.toc is non existent
14701 INFO: Building BUNDLE BUNDLE-00.toc
14706 INFO: Signing the BUNDLE...
14746 INFO: Building BUNDLE BUNDLE-00.toc completed successfully.

查找生成的文件

查看 dist 目录,会发现 ImageProcessor.exe(Windows 系统)或 ImageProcessor( macOS/Linux 系统)。

运行可执行文件
./dist/ImageProcessor images/sample.jpg images/sample_gray.jpg
Saved grayscale image to images/sample_gray.jpg

在这里插入图片描述

127 PyYAML - YAML 解析和生成工具

PyYAML版本6.0.2,官方文档
PyYAML 是一个用于处理 YAML(YAML Ain’t Markup Language)的 Python 库。YAML 是一种人类可读的数据序列化格式,广泛用于配置文件和数据交换。PyYAML 允许你轻松地将 YAML 格式的数据加载到 Python 对象中,或将 Python 对象转储为 YAML 格式。

基本用法

  • 加载 YAML 数据

使用 yaml.load() 函数从 YAML 文件或字符串中读取数据。

  • 转储 YAML 数据

使用 yaml.dump() 函数将 Python 对象转换为 YAML 格式。

示例:读取配置内容
项目结构
yaml_example/
├── config.yaml
└── main.py
代码文件

config.yaml 内容

# 复杂配置文件示例
app:name: MyWebAppversion: 1.0debug: truefeatures:authentication: truepayments: falsenotifications:email: truesms: falsedatabase:type: postgresqlhost: localhostport: 5432username: myuserpassword: mypassdbname: mydatabaselogging:level: DEBUGhandlers:- console- filefile:path: /var/log/mywebapp.logmax_size: 10MBbackup_count: 5api:endpoints:- path: /usersmethod: GETdescription: Get user list- path: /users/{id}method: GETdescription: Get user by ID- path: /usersmethod: POSTdescription: Create a new user

main.py 内容

import yamldef load_config(file_path):"""加载 YAML 配置文件"""with open(file_path, 'r') as file:config = yaml.load(file, Loader=yaml.FullLoader)return configdef print_config(config):"""打印配置内容"""print(f"应用名称: {config['app']['name']}")print(f"版本: {config['app']['version']}")print(f"调试模式: {config['app']['debug']}")print("功能开关:")for feature, enabled in config['app']['features'].items():print(f"  {feature}: {'开启' if enabled else '关闭'}")print("数据库配置:")print(f"  类型: {config['database']['type']}")print(f"  主机: {config['database']['host']}")print(f"  端口: {config['database']['port']}")print(f"  用户名: 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • SciPy 插值
  • CI/CD持续集成和持续部署以及相关软件的使用
  • xLSTM模型学习笔记
  • 商务办公tips1:如何将网页转换为pdf
  • 视频监控平台是如何运作的?EasyCVR视频汇聚平台的高效策略与实践
  • Adobe After Effects 2022 安装包及全家桶下载:永久免费提供完整安装指南
  • [数据集][目标检测]男女性别检测数据集VOC+YOLO格式9769张2类别
  • GeoPandas在地理空间数据分析中的应用
  • 源代码审查范围为:
  • Maven从入门到精通(三)
  • 力扣3014.输入单词需要的最少按键次数I
  • 11、LLaMA-Factory自定义数据集微调
  • 区块链的可伸缩性以及面临的挑战
  • 3D点云目标检测数据集标注工具 保姆级教程——CVAT (附json转kitti代码)
  • Python 3 速成技巧
  • ES6 学习笔记(一)let,const和解构赋值
  • ES6核心特性
  • Python语法速览与机器学习开发环境搭建
  • Python中eval与exec的使用及区别
  • 从重复到重用
  • 分享一个自己写的基于canvas的原生js图片爆炸插件
  • 和 || 运算
  • 欢迎参加第二届中国游戏开发者大会
  • 回顾 Swift 多平台移植进度 #2
  • 三分钟教你同步 Visual Studio Code 设置
  • ​学习一下,什么是预包装食品?​
  • ​中南建设2022年半年报“韧”字当头,经营性现金流持续为正​
  • # AI产品经理的自我修养:既懂用户,更懂技术!
  • # 手柄编程_北通阿修罗3动手评:一款兼具功能、操控性的电竞手柄
  • #pragma once与条件编译
  • #QT 笔记一
  • (1)svelte 教程:hello world
  • (C++)八皇后问题
  • (pojstep1.1.2)2654(直叙式模拟)
  • (二)hibernate配置管理
  • (分布式缓存)Redis持久化
  • (附源码)ssm高校实验室 毕业设计 800008
  • (附源码)ssm跨平台教学系统 毕业设计 280843
  • (附源码)小程序儿童艺术培训机构教育管理小程序 毕业设计 201740
  • (接口自动化)Python3操作MySQL数据库
  • (力扣)1314.矩阵区域和
  • (限时免费)震惊!流落人间的haproxy宝典被找到了!一切玄妙尽在此处!
  • (小白学Java)Java简介和基本配置
  • (一)Neo4j下载安装以及初次使用
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • (一)模式识别——基于SVM的道路分割实验(附资源)
  • (转)visual stdio 书签功能介绍
  • (轉貼) 2008 Altera 亞洲創新大賽 台灣學生成果傲視全球 [照片花絮] (SOC) (News)
  • .NET 5.0正式发布,有什么功能特性(翻译)
  • .net core 6 集成和使用 mongodb
  • .net 程序 换成 java,NET程序员如何转行为J2EE之java基础上(9)
  • .net 流——流的类型体系简单介绍
  • .net6Api后台+uniapp导出Excel
  • .Net下的签名与混淆
  • .Net转Java自学之路—基础巩固篇十三(集合)