图解 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}")

相关推荐
数据分析螺丝钉20 分钟前
力扣第240题“搜索二维矩阵 II”
经验分享·python·算法·leetcode·面试
小蜗笔记1 小时前
在Python中实现多目标优化问题(7)模拟退火算法的调用
开发语言·python·模拟退火算法
TANGLONG2221 小时前
【C语言】数据在内存中的存储(万字解析)
java·c语言·c++·python·考研·面试·蓝桥杯
魏大橙1 小时前
Fastjson反序列化
开发语言·python
立黄昏粥可温2 小时前
Python 从入门到实战34(实例2:绘制蟒蛇)
开发语言·python
柚乐果果2 小时前
数据分析实战简例
java·大数据·python
luthane2 小时前
python 实现djb2哈希算法
python·算法·哈希算法
yz_518 Nemo2 小时前
django的路由分发
后端·python·django
山川而川-R3 小时前
Windows安装ollama和AnythingLLM
人工智能·python·语言模型·自然语言处理
大地之灯3 小时前
深度学习每周学习总结J1(ResNet-50算法实战与解析 - 鸟类识别)
人工智能·python·深度学习·学习·算法