图解 Python 编程(9) | 模块和包
🌞欢迎来到Python的世界
🌈博客主页:卿云阁💌欢迎关注🎉点赞👍收藏⭐️留言📝
🌟本文由卿云阁原创!
📆首发时间:🌹2024年6月2日🌹
✉️希望可以和大家一起完成进阶之路!
🙏作者水平很有限,如果发现错误,请留言轰炸哦!万分感谢!
目录
模块
包
常见的python模块
os:操作系统管理
sys:调用命令行参数
random:生成随机数
json:序列化
pickle:序列化
glob:查找文件
shutil:文件管理
platform:操作系统信息
模块
什么是模块
在Python中,⼀个.py⽂件就可以称之为 ⼀个模块(Module)。
模块分类
模块分为三种:
(1)内置标准模块(又称标准库)
执行help(‘modules’)查看所有python自带模块列表
help('modules')
(2)第三方开源模块
可通过 pip install 模块名 联网安装,其中plotly是我需要安装的模块名。
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple plotly
软件⼀般会被自动安装你python安装目录的这个子目录里
/your_python_install_path/3.6/lib/python3.6/site-packages
卸载
pip uninstall numpy
(3)自定义模块
import+模块名,这种方式会导入m1模块的所有元素在访问时, 需要加上前缀"m1."


包
一个包就是一个文件目录,你可以把同一个业务线的文件放在一起
常见的python模块
python中的模块有很多,这里我们列出几种常见的模块的使用:
os:操作系统管理
os 模块提供了很多允许你的程序与操作系统直接交互的功能
>>> import os
>>> os.getcwd()#当前项目的路径
'D:\\pythonProject6'
>>> os.listdir()#当前项目的文件
['.idea', 'index.html', 'main.py', 'venv']
import os
得到当前⼯作⽬录,即当前Python脚本⼯作的⽬录路径: os.getcwd()
返回指定⽬录下的所有⽂件和⽬录名:os.listdir()
函数⽤来删除⼀个⽂件:os.remove()
删除多个⽬录:os.removedirs(r“c:\python”)
检验给出的路径是否是⼀个⽂件:os.path.isfile()
检验给出的路径是否是⼀个⽬录:os.path.isdir()
判断是否是绝对路径:os.path.isabs()
检验给出的路径是否真地存:os.path.exists()
返回⼀个路径的⽬录名和⽂件名:os.path.split() e.g
os.path.split('/home/swaroop/byte/code/poem.txt') 结果:
('/home/swaroop/byte/code', 'poem.txt')
分离扩展名:os.path.splitext() e.g os.path.splitext('/usr/local/test.py')结果:('/usr/local/test', '.py')
获取路径名:os.path.dirname()
获得绝对路径: os.path.abspath()
获取⽂件名:os.path.basename()
运⾏shell命令: os.system()
读取操作系统环境变量HOME的值:os.getenv("HOME")
返回操作系统所有的环境变量: os.environ
设置系统环境变量,仅程序运⾏时有效:os.environ.setdefault('HOME','/home/alex')
给出当前平台使⽤的⾏终⽌符:os.linesep Windows使⽤'\r\n',Linux and MAC使⽤'\n'
指示你正在使⽤的平台:os.name 对于Windows,它是'nt',⽽对于Linux/Unix⽤户,它
是'posix'
重命名:os.rename(old, new)
创建多级⽬录:os.makedirs(r“c:\python\test”)
创建单个⽬录:os.mkdir(“test”)
获取⽂件属性:os.stat(file)
修改⽂件权限与时间戳:os.chmod(file)
获取⽂件⼤⼩:os.path.getsize(filename)
结合⽬录名与⽂件名:os.path.join(dir,filename)
改变⼯作⽬录到dirname: os.chdir(dirname)
获取当前终端的⼤⼩: os.get_terminal_size()
杀死进程: os.kill(10884,signal.SIGKILL)
sys:调用命令行参数
“sys”即“system”,“系统”之意。该模块提供了一些接口,用于访问 Python 解释器自身使用和维护的变量,同时模块中还提供了一部分函数,可以与解释器进行比较深度的交互。
import sys
print("-----获取环境变量-----")
print(sys.path)
print("-----获取当前脚本的参数-----")
print(sys.argv)结果
-----获取环境变量-----
['D:\\pythonProject6', 'D:\\pythonProject6', 'D:\\pycharm\\PyCharm 2021.2.3\\plugins\\python\\helpers\\pycharm_display', 'D:\\anaconda\\python38.zip', 'D:\\anaconda\\DLLs', 'D:\\anaconda\\lib', 'D:\\anaconda', 'C:\\Users\\qingyun\\AppData\\Roaming\\Python\\Python38\\site-packages', 'D:\\anaconda\\lib\\site-packages', 'D:\\anaconda\\lib\\site-packages\\locket-0.2.1-py3.8.egg', 'D:\\anaconda\\lib\\site-packages\\win32', 'D:\\anaconda\\lib\\site-packages\\win32\\lib', 'D:\\anaconda\\lib\\site-packages\\Pythonwin', 'D:\\pycharm\\PyCharm 2021.2.3\\plugins\\python\\helpers\\pycharm_matplotlib_backend']
-----获取当前脚本的参数-----
['D:/pythonProject6/main.py']
random:生成随机数
>>> random.randrange(1,10) #返回1-10之间的⼀个随机数,不包括10
>>> random.randint(1,10) #返回1-10之间的⼀个随机数,包括10
>>> random.randrange(0, 100, 2) #随机选取0到100间的偶数
>>> random.random() #返回⼀个随机浮点数
>>> import random
>>> random.choice('abcdefghi')
'i'
>>> random.sample('abcdefghij',3) #从多个字符中选取特定数量的字符
['h', 'c', 'f']
>>> import string
>>> ''.join(random.sample(string.ascii_lowercase + string.digits, 6))
'4fvda1'
#洗牌
>>> a [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> random.shuffle(a)
>>> a [3, 0, 7, 2, 1, 6, 5, 8, 9, 4]
json:序列化
什么是Json?
Json的作用是用于不同语言接口间的数据交换,比如你把python的list、dict直接扔给javascript, 它是解析不了的。2个语言互相谁也不认识。Json就像是计算机界的英语 ,可以帮各个语言之间实现数据类型的相互转换。
python的序列化
import json# Python对象
data = {'name': 'Alice', 'age': 25, 'is_student': True}# 序列化为JSON字符串
json_str = json.dumps(data)
print(json_str)# 反序列化为Python对象
data = json.loads(json_str)
print(data)
pickle:序列化
提供了四个功能:dumps、dump、loads、load
import pickle# Python对象
data = {'name': 'Alice', 'age': 25, 'is_student': True}# 序列化为二进制格式并写入文件
with open('data.pkl', 'wb') as file:pickle.dump(data, file)# 从文件中读取并反序列化
with open('data.pkl', 'rb') as file:data = pickle.load(file)
print(data)
json
Json模块也提供了四个功能:dumps、dump、loads、load,用法跟pickle⼀致
json vs pickle:
JSON:
优点:跨语⾔(不同语言间的数据传递可用json交接)、体积⼩
缺点:只能⽀持int\str\list\tuple\dict
Pickle:
优点:专为python设计,支持持python所有的数据类型
缺点:只能在python中使用,存储数据占空间大
glob:查找文件
import glob# 查找当前目录下所有的 .txt 文件
txt_files = glob.glob('*.txt')
print('txt 文件:', txt_files)# 查找当前目录及其子目录下所有的 .py 文件
py_files = glob.glob('**/*.py', recursive=True)
print('py 文件:', py_files)# 查找当前目录下所有以 'data' 开头的文件
data_files = glob.glob('data*')
print('data 开头的文件:', data_files)
shutil:文件管理
import shutil
import os# 创建测试文件和目录
os.makedirs('test_dir/sub_dir', exist_ok=True)
with open('test_dir/file1.txt', 'w') as f:f.write('This is a test file.')# 复制文件
shutil.copy('test_dir/file1.txt', 'test_dir/file2.txt')
print('文件已复制为 file2.txt')# 复制目录
shutil.copytree('test_dir', 'test_dir_copy')
print('目录已复制为 test_dir_copy')# 移动文件
shutil.move('test_dir/file2.txt', 'test_dir/sub_dir/file2_moved.txt')
print('文件已移动到 sub_dir')# 删除目录
shutil.rmtree('test_dir_copy')
print('目录 test_dir_copy 已删除')# 创建压缩文件
shutil.make_archive('test_archive', 'zip', 'test_dir')
print('压缩文件 test_archive.zip 已创建')# 解压缩文件
shutil.unpack_archive('test_archive.zip', 'extracted_dir')
print('压缩文件已解压到 extracted_dir')
platform:操作系统信息
import platform# 获取操作系统名称
os_name = platform.system()
print(f"操作系统名称: {os_name}")# 获取操作系统版本
os_version = platform.version()
print(f"操作系统版本: {os_version}")# 获取操作系统发布版本
os_release = platform.release()
print(f"操作系统发布版本: {os_release}")# 获取机器类型
machine_type = platform.machine()
print(f"机器类型: {machine_type}")# 获取处理器信息
processor_info = platform.processor()
print(f"处理器信息: {processor_info}")# 获取Python版本
python_version = platform.python_version()
print(f"Python 版本: {python_version}")# 获取Python编译器信息
python_compiler = platform.python_compiler()
print(f"Python 编译器: {python_compiler}")# 获取Python实现
python_impl = platform.python_implementation()
print(f"Python 实现: {python_impl}")# 综合平台信息
platform_info = platform.platform()
print(f"平台信息: {platform_info}")# 使用 uname 获取详细信息
uname_info = platform.uname()
print(f"uname 信息: {uname_info}")
相关文章:

图解 Python 编程(9) | 模块和包
🌞欢迎来到Python的世界 🌈博客主页:卿云阁 💌欢迎关注🎉点赞👍收藏⭐️留言📝 🌟本文由卿云阁原创! 📆首发时间:🌹2024年6月2日&…...

德克萨斯大学奥斯汀分校自然语言处理硕士课程汉化版(第五周) - Transformer
Transformer 1. 注意力机制 在语言建模中,注意力(attention)是一个关键机制,用于在给定上下文中访问相关信息以进行预测。注意力机制允许模型根据输入上下文中的重要信息来加权关注不同的部分,并根据其重要性来决定对不同部分的关注程度。 …...
识别同一用户
识别来自同一终端的访问技术 使用HTTP访问Web服务器时,会反复地执行页面的迁移和图像的读取等通信处理。而不同的通信都是使用不同的方式进行处理。因此服务器端就不需要对每个终端的状态进行单独的管理,可以降低服务器的负载。 另外,…...
Chrome DevTools攻略
Chrome DevTools攻略 Chrome DevTools 是 Chrome 浏览器内置的一组开发者工具,用于帮助开发者调试和优化网页和应用程序。本文将详细介绍如何使用 Chrome DevTools 进行高效的开发和调试。 目录 介绍 什么是 Chrome DevTools? DevTools 的主要功能和用…...
用Python获取Windows本机安装的所有应用程序的实现与分析
一个项目中需要获取本机安装的所有应用程序列表,花了一点时间研究了一下,分享出来。 主要通过访问注册表和桌面快捷方式来完成这一任务,因为注册表中获取到的应用程序列表不完全,因此通过桌面快捷方式进行补充。 导入所需模块 im…...

springboot基础及上传组件封装
简介 本文主要以文件上传为demo,介绍了一些 springboot web 开发的入门的技术栈。 对应刚接触 springboot 的可以参考下。 主要包括文件md5比对、生成图片缩略图、数据库迁移、文件记录持久化、请求全局异常处理等功能。 准备工作 在 idea 中创建项目ÿ…...
WHAT - package.json 解释
目录 一、前言二、介绍2.1 package.json 文件示例2.2 关键字段2.3 常用命令2.4 自定义脚本 三、element-plus 完整示例3.1 main 和 module1. main 字段2. module 字段3. 综合示例 3.2 types1. 示例2. TypeScript 类型定义文件的作用3. 类型定义文件示例4. 发布带有类型定义的包…...

Python知识点14---被规定的资源
提前说一点:如果你是专注于Python开发,那么本系列知识点只是带你入个门再详细的开发点就要去看其他资料了,而如果你和作者一样只是操作其他技术的Python API那就足够了。 在Python中被规定的东西不止有常识中的那些关键字、构造器等编程语言…...

文献阅读:GCNG:用于从空间转录组数据推断基因相互作用的图卷积网络
文献介绍 「文献题目」 GCNG: graph convolutional networks for inferring gene interaction from spatial transcriptomics data 「研究团队」 Ziv Bar-Joseph(美国卡内基梅隆大学) 「发表时间」 2020-12-10 「发表期刊」 Genome Biology 「影响因子…...

Mybatis第一讲——你会Mybatis吗?
文章目录 什么是MybatisMybatis的作用是什么 Mybatis 怎么使用注解的方式注解的多种使用Options注解ResultType注解 XML的方式update标签 #{} 和 ${}符号的区别#{}占位${}占位 ${}占位的危险性(SQL注入)数据库连接池 什么是Mybatis 首先什么是Mybatis呢?Mybatis是一…...

【HarmonyOS】List组件多层对象嵌套ForEach渲染更新的处理
【HarmonyOS】List组件多层对象嵌套ForEach渲染更新的处理 问题背景: 在鸿蒙中UI更新渲染的机制,与传统的Android IOS应用开发相比。开发会简单许多,开发效率提升显著。 一般传统应用开发的流程处理分为三步:1.画UI,…...

PostgreSQL基础(六):PostgreSQL基本操作(二)
文章目录 PostgreSQL基本操作(二) 一、字符串类型 二、日期类型 三、...

【前端部署——vercel】部署next.js使用了prisma的项目
部署流程参考 https://blog.csdn.net/qq_51116518/article/details/137042682 问题 PrismaClientInitializationError: Prisma has detected that this project was built on Vercel, which caches dependencies. This leads to an outdated Prisma Client because Prisma’s …...

Vue插槽与作用域插槽
title: Vue插槽与作用域插槽 date: 2024/6/1 下午9:07:52 updated: 2024/6/1 下午9:07:52 categories: 前端开发 tags:VueSlotScopeSlot组件通信Vue2/3插槽作用域API动态插槽插槽优化 第1章:插槽的概念与原理 插槽的定义 在Vue.js中,插槽(…...

类和对象(一)(C++)
类和对象: 类的引入: C语言结构体中只能定义变量,在C中,结构体内不仅可以定义变量,也可以定义函数。比如: 之前在数据结构初阶中,用C语言方式实现的栈,结构体中只能定义变量&#…...

【免费Web系列】JavaWeb实战项目案例六
这是Web第一天的课程大家可以传送过去学习 http://t.csdnimg.cn/K547r 员工信息-删除&修改 前面我们已经实现了员工信息的条件分页查询以及新增操作。 关于员工管理的功能,还有两个需要实现: 删除员工 修改员工 除了员工管理的功能之外&#x…...
git分布式版本控制系统(四)
目前世界上最先进的分布式版本控制系统 官方网址:https://git-scm.com 学习目标: 1 了解 git 前世今生 2 掌握 git 基础概念、基础操作 3 各种 git 问题处理 4 互联网常用 gitflow(工作流程规范) 5 git 代码提交规范 6 git 分支管理及命名规范 常见问…...

【React篇】简述React-Router 的实现原理及工作方式
React Router 路由的基础实现原理分为两种,如果是切换 Hash 的方式,那么依靠浏览器 Hash 变化即可;如果是切换网址中的 Path,就要用到 HTML5 History API 中的 pushState、replaceState 等。在使用这个方式时,还需要在…...

Django里多app
在 Django 里的某一个项目,里面得包含很多 App (功能),那么如何在该项目里管理这么多App呢? 先说明下背景:未先创建 apps 文件夹来存各个app文件夹,直接在项目文件目录里创建各个app。为了便于管理,得将各…...

Prime1 - 信息收集和分析能力的试炼
主机发现 nmap扫描与分析 端口22、80 详细扫描;linux、ubuntu、 udp扫描 端口都是关闭的 脚本扫描 web渗透 打开只有一张图片;源码有图片和一个alt:hnp security不知道有啥用,先记录下来吧 继续web渗透思路走吧,目录…...

遍历 Map 类型集合的方法汇总
1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

智能在线客服平台:数字化时代企业连接用户的 AI 中枢
随着互联网技术的飞速发展,消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁,不仅优化了客户体验,还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用,并…...
【AI学习】三、AI算法中的向量
在人工智能(AI)算法中,向量(Vector)是一种将现实世界中的数据(如图像、文本、音频等)转化为计算机可处理的数值型特征表示的工具。它是连接人类认知(如语义、视觉特征)与…...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...
Device Mapper 机制
Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...

使用Spring AI和MCP协议构建图片搜索服务
目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式(本地调用) SSE模式(远程调用) 4. 注册工具提…...
作为测试我们应该关注redis哪些方面
1、功能测试 数据结构操作:验证字符串、列表、哈希、集合和有序的基本操作是否正确 持久化:测试aof和aof持久化机制,确保数据在开启后正确恢复。 事务:检查事务的原子性和回滚机制。 发布订阅:确保消息正确传递。 2、性…...

MySQL:分区的基本使用
目录 一、什么是分区二、有什么作用三、分类四、创建分区五、删除分区 一、什么是分区 MySQL 分区(Partitioning)是一种将单张表的数据逻辑上拆分成多个物理部分的技术。这些物理部分(分区)可以独立存储、管理和优化,…...
基于鸿蒙(HarmonyOS5)的打车小程序
1. 开发环境准备 安装DevEco Studio (鸿蒙官方IDE)配置HarmonyOS SDK申请开发者账号和必要的API密钥 2. 项目结构设计 ├── entry │ ├── src │ │ ├── main │ │ │ ├── ets │ │ │ │ ├── pages │ │ │ │ │ ├── H…...
人工智能 - 在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型
在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型。这些平台各有侧重,适用场景差异显著。下面我将从核心功能定位、典型应用场景、真实体验痛点、选型决策关键点进行拆解,并提供具体场景下的推荐方案。 一、核心功能定位速览 平台核心定位技术栈亮…...