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

图解 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."

from <模块名> import <代码元素>:通过这种方式会导入 m1 中的name 变量,在访问时不需要加前缀" m1"
from <模块名> import <代码元素> as<代码元素别名>:在当前 模块的代码元素( name 变量)与要导入的m1模块的代码元素(name变量)名称有冲突时,可以给要导入的代码元素(m1中的name)一 个别名name1

一个包就是一个文件目录,你可以把同一个业务线的文件放在一起


常见的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 中创建项目&#xff…...

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渗透思路走吧,目录…...

3.location的写法

location的写法 一、location的写法1、 精确匹配2、~ 以正则表达式匹配请求,区分大小写3、~* 以正则匹配请求,不区分大小写4、^~ 不以正则的方式匹配请求 二、stub_status模块显示工作状态三、url地址重写 rewrite模块1、语法2、针对项目结构有变化3、网…...

AndroidStudio设置允许APP获取定位权限

1. 在AndroidManifest.xml中声明权限 常用的定位权限有以下两种&#xff1a; <uses-permission android:name"android.permission.ACCESS_FINE_LOCATION"/> <uses-permission android:name"android.permission.ACCESS_COARSE_LOCATION"/>2. …...

Spring Boot 统一数据返回格式

在 Spring Boot 项目中&#xff0c;统一的数据格式返回是一种良好的实践&#xff0c;它提高了代码的可维护性和一致性&#xff0c;并改善了客户端与服务端之间的通信。本文将介绍如何在 Spring Boot 中实现统一的数据格式返回。 1 为什么需要统一数据返回格式 ⽅便前端程序员更…...

Android 项目Gradle文件讲解(Groovy和Kotlin)

Android 项目Gradle文件讲解&#xff08;Groovy和Kotlin&#xff09; 前言正文一、Gradle的作用二、Gradle的种类① 工程build.gradle② 项目build.gradle③ settings.gradle④ gradle.properties⑤ gradle-wrapper.properties⑥ local.properties 三、Groovy和Kotlin的语言对比…...

python-最接近target的值

【问题描述】&#xff1a;给定一个数组&#xff0c;在数组中找到两个数&#xff0c;使它们的和最接近目标值的值但不超过目标值&#xff0c;然后返回它们的和。 【问题示例】&#xff1a;输入target15,array[1,3,5,11,7],输出14&#xff0c;31114。 完整代码如下&#xff1a; …...

转换张量形状:`nlc_to_nchw` 函数详解

在深度学习和计算机视觉领域&#xff0c;张量的形状转换是一个常见的操作。本文将详细讲解一个用于形状转换的函数 nlc_to_nchw&#xff0c;它能够将形状为 [N, L, C] 的张量转换为 [N, C, H, W] 的张量。 函数定义 def nlc_to_nchw(x, hw_shape):"""Convert …...

「架构」云上自动化运维及其应用

随着云计算的普及,自动化运维成为企业提升运营效率和降低成本的关键。本文通过分析一家中型企业实施云上自动化运维(CloudOps)的案例,探讨了自动化监控、配置管理和持续集成/持续部署(CI/CD)三个核心模块的实际应用。文章详细阐述了每个模块的技术选型、实施原因、优缺点…...

分布式和集群的区别

分布式系统&#xff08;Distributed System&#xff09;和集群&#xff08;Cluster&#xff09;是两个经常被提及的计算机科学概念&#xff0c;它们在提高系统性能和可靠性方面都扮演着重要角色&#xff0c;很多同学会觉得这俩个是同一种东西&#xff0c;但事实上它们之间有着本…...

最新h5st(4.7.2)参数分析与纯算法还原(含算法源码)

文章目录 1. 写在前面2. 加密分析3. 算法还原 【&#x1f3e0;作者主页】&#xff1a;吴秋霖 【&#x1f4bc;作者介绍】&#xff1a;擅长爬虫与JS加密逆向分析&#xff01;Python领域优质创作者、CSDN博客专家、阿里云博客专家、华为云享专家。一路走来长期坚守并致力于Python…...

Spark大数据 掌握RDD的创建

在Apache Spark中&#xff0c;弹性分布式数据集&#xff08;Resilient Distributed Dataset&#xff0c;简称RDD&#xff09;是一个核心的数据结构&#xff0c;用于表示不可变、可分区、可并行操作的元素集合。理解并掌握RDD的创建是使用Spark进行大数据处理的关键步骤之一。 …...