文章目录
- 时间处理
- 方法 功能 示例 time() 时间戳,1970年1月1日00:00:00 UTC至今的秒数 1753161307.4428105 ctime() 获取可读的时间字符串 “Tue Jul 22 13:15:07 2025" localtime() 获取结构化时间对象(包含年、月、日等字段) time.struct_time(tm_year=2025, tm_mon=7, tm_mday=22, tm_hour=13, tm_min=15, tm_sec=7, tm_wday=1, tm_yday=203, tm_isdst=0) strftime("%Y-%m-%d %H:%M:%S",struct_time) 时间格式化(字符串) “2025-07-22 13:33:09” strptime(“2025-07-22”) 时间解析 “time.struct_time(tm_year=2025, tm_mon=7, tm_mday=22, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=1, tm_yday=203, tm_isdst=-1)” perf_counter()) 精确计时(性能测试) 耗时时间 sleep(2.5) 程序暂停 停顿2.5秒 localtime() 时间戳 -> struct_time 时间类型转化 mktime() struct_time -> 时间戳 时间类型转化
- time.time() 功能:获取当前的时间戳(1970年1月1日00:00:00 UTC至今的秒数) 示例: import time print(time.time()) # 输出:1753161307.4428105(当前时间) time.ctime() 功能:获取可读的时间字符串 示例: print(time.ctime()) # 输出:“Tue Jul 22 13:15:07 2025” time.localtime() 功能:获取结构化时间对象(包含年、月、日等字段) 示例: struct_time = time.localtime() print(struct_time.tm_year, struct_time.tm_mon,struct_time.tm_mday) # 输出:2025 7 22
- time.strftime() 功能:时间格式化 示例: struct_time = time.localtime() formatted = time.strftime(“%Y-%m-%d %H:%M:%S”,struct_time) # 输出 2025-07-22 13:33:09 time.strptime() 功能:时间解析(字符串 -> struct_time) 示例: parsed_time = time.strptime(“2025-07-22”, “%Y-%m-%d”) print(parsed_time) # 输出: # time.struct_time(tm_year=2025, tm_mon=7, tm_mday=22, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=1, tm_yday=203, tm_isdst=-1)
- time.pref_counter() 功能:精确计时(性能测试) 示例: start = time.perf_counter() time.sleep(2) end = time.perf_counter() print(f”执行耗时:{end – start:.4f}秒”) # 输出: # 执行耗时:2.0003秒 time.sleep() 功能:程序暂停 示例: start = int(time.time()) time.sleep(2) end = int(time.time()) print(f”停顿{end – start:.2f}秒”) # 输出: # 停顿2.00秒
- 时间戳 -> struct_time 方法:time.localtime() 示例: timestamp = time.time() ts_to_struct = time.localtime(timestamp) print(ts_to_struct) # 输出: # time.struct_time(tm_year=2025, tm_mon=7, tm_mday=22, tm_hour=13, tm_min=50, tm_sec=49, tm_wday=1, tm_yday=203, tm_isdst=0) struct_time -> 时间戳 方法:time.mktime() 示例: struct_time = time.localtime() struct_to_ts = time.mktime(struct_time) print(struct_to_ts) # 输出: # 1753163493.0
- 生成随机数和实现随机选择功能
- 方法 功能 示例 random() [0.0, 1.0) 的随机浮点数 0.374501 uniform(a, b) [a, b] 的随机浮点数 7.823 randint(a, b) [a, b] 的随机整数 4 randrange(start, stop, step) 指定范围的随机整数 45 choice(seq) 序列中的随机元素 “green” choices(population, k) 有放回抽样 [‘B’, ‘C’] sample(population, k) 无放回抽样 [3, 1, 5] shuffle(seq) 原地打乱序列 [‘K’, ‘A’, ‘J’, ‘Q’] gauss(mu, sigma) 高斯分布随机数 0.735 seed(a) 初始化随机种子 固定随机序列 getstate() / setstate() 保存/恢复状态 重现随机序列
- random.random() 功能:生成 [0.0, 1.0) 之间的随机浮点数。 示例: import random print(random.random()) # 输出:0.374501(随机值) 控制小数位数 内置函数/四舍五入round(random.random(), 3) # 默认 3 位小数 格式化formatted = f{random.random():.3f} # 默认 3 位小数 random.uniform(a, b) 功能:生成 [a, b] 之间的随机浮点数。 示例: print(random.uniform(2, 10)) # 输出:7.342(随机浮点数)
- random.randint(a, b) 功能:生成 [a, b] 之间的随机整数(包含两端)。 示例: print(random.randint(1, 10)) # 输出:3 random.randrange(start, stop, step) 功能:从 range(start, stop, step) 中随机选择一个整数 [start, stop) 左开右闭。 示例: print(random.randrange(0, 100, 5)) # 输出:45(0,5,10,…,95 中的随机数)
- random.choice(seq) 功能:从非空序列中随机选择一个元素。 示例: colors = [‘red’, ‘green’, ‘blue’] print(random.choice(colors)) # 输出:’green’(随机颜色) random.choices(population, weights=None, k=1) 功能:从序列中有放回地随机抽取 k 个元素(可设置权重)。 示例: result = random.choices([‘A’, ‘B’, ‘C’], weights=[0.2, 0.5, 0.3], k=2) print(result) # 输出:[‘B’, ‘C’](权重越高越可能被选中) random.sample(population, k) 功能:从序列中无放回地随机抽取 k 个唯一元素。 示例: numbers = [1, 2, 3, 4, 5] print(random.sample(numbers, 3)) # 输出:[3, 1, 5](随机不重复的3个数) random.shuffle(seq) 功能:将序列原地随机打乱(修改原序列)。 示例: cards = [‘A’, ‘K’, ‘Q’, ‘J’] random.shuffle(cards) print(cards) # 输出:[‘K’, ‘A’, ‘J’, ‘Q’](顺序随机)
- random.gauss(mu, sigma) 功能:生成高斯分布(正态分布)的随机数,mu 为均值,sigma 为标准差。 示例: print(random.gauss(0, 1)) # 输出:0.735(标准正态分布中的随机值) random.expovariate(lambd) 功能:生成指数分布的随机数,lambd 是事件发生率的倒数。 用途: 多用于建模随机事件之间的时间间隔,尤其适合那些平均间隔已知但具体时间不确定的场景。 示例: print(random.expovariate(1.0/5)) # 输出:3.2(模拟平均每5秒发生一次的事件间隔)
- random.seed(a=None) 功能:初始化随机数生成器,相同种子生成相同随机序列(用于可重复性)。 示例: random.seed(42) # 固定种子 print(random.random()) # 输出:0.6394(每次运行结果相同)
- random.getstate() 和 random.setstate(state) 功能:保存/恢复随机数生成器的内部状态。 原理: 这是伪随机数生成器的典型行为,用于保证生成的随机数序列具有不可预测性和多样性 示例: state = random.getstate() # 保存当前状态 print(random.random()) # 随机数1 random.setstate(state) # 恢复状态 print(random.random()) # 再次输出相同的随机数1
- 操作系统交互
- 方法 功能 备注 mkdir() 创建单级目录 存在时创建的目录会报错 makedirs() 创建多级目录 exist_ok = True 已存在创建的目录不会报错 rename() 重命名 remove() 删除文件 scandir() 目录遍历 walk() 递归遍历目录 os.path.join() 路径拼接 os.path.dirname() 、os.path.basename()、os.path.splitext() 路径分解 os.path.exists、os.path.isfile()、os.path.isdir() 路径检查 os.getcwd() 获取当前路径 os.chdir() 修改工作目录 os.environ.get() 获取环境变量 os.system() 执行系统命令
- 创建目录 方法:os.mkdir() / os.makedirs() 示例: import os os.mkdir(“1”) # 创建单级目录 | 文件已存在会报错 os.makedirs(“test/1”, exist_ok=True) # 创建多级目录,exist_ok=True,当文件已存在时不报错 文件操作 方法:os.rename() / os.remove() 示例: import os os.rename(“old.txt”,”new.txt”) # 重命名 os.remove(“test/1.txt”) # 删除文件 目录遍历 方法:os.scandir() 示例: import os for entry in os.scandir(“.”): # . 遍历当前目录下的所有 文件 和 子目录 if entry.is_file(): print(“文件:”,entry) # 输出: # 文件: <DirEntry ‘1.py’>
- 路径分解 方法:os.path.dirname() | os.path.basename() | os.path.splitext() 示例: import os path = “/home/user/documents/report.txt” # 获取路径组成部分 dir_path = os.path.dirname(path) # 目录路径: “/home/user/documents” file_name = os.path.basename(path) # 完整文件名: “report.txt” file_root, file_ext = os.path.splitext(file_name) # 分离主名和扩展名: (“report”, “.txt”) # 完整路径拆分 head, tail = os.path.split(path) # (“/home/user/documents”, “report.txt”) 路径拼接 方法:os.path.join() 示例: full_path = os.path.join(“dir”,”subdir”,”file.txt”) 路径检查 方法:os.path.exists() | os.path.isfile() | os.path.isdir() 示例: print(os.path.exists(“1.txt”)) # 是否存在 print(os.path.isfile(“1.txt”)) # 是否是文件 print(os.path.isdir(“1.txt”)) # 是否是目录 # 输出答案(根据个人本地要查询的文件为主) # True # True # False
- os.getcwd() 功能:获取当前工作目录 示例: cwd = os.getcwd() os.chdir() 功能:修改工作目录 示例: cwd = os.chdir(“/new/path”) os.environ.get() 功能:获取环境变量 示例: home_dir = os.enciron.get(“HOME”,”default”) # 查找 HOME 值,没有则返回默认值 default print(home_dir) os.system() 功能:执行系统命令 示例: os.system(“ls -l”)
- 系统相关功能
- 方法 功能 备注 sys.argv 获取命令行参数 sys.stdout 重定向输出 sys.stdin.readline().strip() 读取标准输入 sys.version 获取Python版本信息 sys.path 获取模块搜索路径 sys.exit(1) 退出程序并返回状态码 非0状态码表示异常退出 sys.stdout.flush() 刷新输出缓冲区 确保立即显示
- sys.argv 功能:获取命令行参数 示例: # 假设执行:python scripts.py arg1 arg2 –option=value print(sys.argv) # [‘script.py’, ‘arg1’, ‘arg2’, ‘–option=value’] # 实际应用:处理命令行选项 if len()sys.argv) > 1: action = sys.argv[1] # arg1 if action == “start”: print(“”) elif action == “stop”: print(“”)
- sys.stdout 功能:重定向输出 示例: with open(‘1.txt’,’w’,encoding=”utf-8-sig”) as f: sys.stdout = f # 重定向标准输出到文件 print(“这条信息将写入文件”) sys.stdout = sys._stdout__ # 恢复标准输出 # 会将print中的内容写进 1.txt文件内 sys.stdin.readline().strip() 功能:读取标准输入 示例: print(“请输入内容:”) user_input = sys.stdin.readline().strip() print(f”您输入了:{user_input}”) # 输出: “”” 请输入内容: 1 2 3 您输入了:1 2 3 “””
- sys.version 功能:获取Python版本信息 示例: print(sys.version) # 输出 “”” 3.11.9 (tags/v3.11.9:de54cf5, Apr 2 2024, 10:12:12) [MSC v.1938 64 bit (AMD64)] “”” sys.path 功能:获取模块搜索路径 示例: print(sys.path) # 输出列表形式,包含Python查找模块的路径 sys.platform 功能:获取操作系统平台 示例: print(sys.platform) # ‘win32’, ‘linux’, ‘darwin’ (macOS) # 输出 “”” win32 “””
- sys.exit(n) 功能:退出程序并返回状态码(n=0时,正常退出;n=1《或是其它数字》时表示异常退出) 场景:通常用于脚本或程序中发生错误时提前退出,表示异常终止 示例: if error_occurred: sys.exit(1) # 非0状态码表示异常退出 sys.stdout.flush() print(“处理中…”, end=””) sys.stdout.flush() # 执行耗时操作… print(“完成!”)
- JSON 数据处理
- 方法 功能 json.dumps() Python -> JSON字符串 json.loads() JSON字符串 -> Python json.dump 写入JSON文件 json.load() 读取JSON文件
- Python -> JSON字符串 方法:json.dumps() 示例: import json data = { “name”: “Alice”, “age”: 30, “hobbies”: [“reading”], “is_student”: False, } json_str = json.dumps(data, indent=2) print(json_str) # 输出: “”” { “name”: “Alice”, “age”: 30, “hobbies”: [ “reading”, “hiking” ], “is_student”: false } “”” JSON字符串 -> Python 方法:json.loads() 示例: restored_data = json.loads(json_str) print(restored_data[“name”]) # “Alice”
- json.dump() 功能:写入JSON文件 示例: with open(“data.json”, “w”) as f: json.dump(data, f, indent=4) # 控制为 4 缩进空格 json.load() 功能:读取JSON文件 示例: with open(“data.json”) as f: loaded_data = json.load(f)
- # 处理自定义对象 class User: def __init__(self, name, age): self.name = name self.age = age # 自定义序列化方法 def user_encoder(obj): if isinstance(obj, User): # 判断 obj 是否是 User 的实例 return {“name”: obj.name, “age”: obj.age} raise TypeError(f”Object of type {obj.__class__.__name__} is not JSON serializable”) user = User(“Bob”, 40) user_json = json.dumps(user, default=user_encoder) # {“name”: “Bob”, “age”: 40} # 自定义反序列化方法 def user_decoder(dct): if “name” in dct and “age” in dct: return User(dct[“name”], dct[“age”]) return dct restored_user = json.loads(user_json, object_hook=user_decoder) print(restored_user.name) # “Bob” “`
目录
- 1. 什么是模块和包?
- 2. 常见的模块及其用法
- 2.1 time
- 概览
- 2.1.1 时间获取方法
- 2.1.2 时间格式化与解析
- 2.1.3 程序计时与延迟
- 2.1.4 时间转换
- 2.2 random
- 概览
- 2.2.1 基本随机数
- 2.2.2 随机整数
- 2.2.3 序列操作
- 2.2.4 概率分布
- 2.2.5 随机种子
- 2.2.6 状态管理
- 2.3 os
- 概览
- 2.3.1 文件与目录操作
- 2.3.2 路径处理
- 2.3.3 系统信息与环境
- 2.4 sys
- 概览
- 2.4.1 命令行参数处理
- 2.4.2 标准输入/输出控制
- 2.4.3 系统信息与配置
- 2.4.4 程序流程控制
- 2.5 json
- 概览
- 2.5.1 基本序列化与反序列化
- 2.5.2 文件读写操作
- 2.5.3 高级序列化控制
- 总结
- 模块是一个包含python代码的文件(后缀名.py),内容可以包括函数、类、变量等
# 文件名为hello.py
def func():
print("hello world!")
func()
使用模块
import hello
- 包是包含多个模块的目录,它通过__init__.py文件(可以是空文件)来标识这是一个Python包。
mypackage/
│── __init__.py
│── module1.py
│── module2.py
└── subpackage/
│── __init__.py
│── module3.py
使用包
from mypackage import module1,module2
from mypackage.subpackage import module3
使用模块
使用包
本文主要讲解模块有:time random os sys json
- time 时间处理
- random 生成随机数和实现随机选择功能
- os 操作系统交互
- sys 系统相关功能
- json JSON 数据处理
时间处理
| 方法 | 功能 | 示例 |
|---|---|---|
time() |
时间戳,1970年1月1日00:00:00 UTC至今的秒数 | 1753161307.4428105 |
ctime() |
获取可读的时间字符串 | “Tue Jul 22 13:15:07 2025" |
localtime() |
获取结构化时间对象(包含年、月、日等字段) | time.struct_time(tm_year=2025, tm_mon=7, tm_mday=22, tm_hour=13, tm_min=15, tm_sec=7, tm_wday=1, tm_yday=203, tm_isdst=0) |
strftime("%Y-%m-%d %H:%M:%S",struct_time) |
时间格式化(字符串) | “2025-07-22 13:33:09” |
strptime(“2025-07-22”) |
时间解析 | “time.struct_time(tm_year=2025, tm_mon=7, tm_mday=22, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=1, tm_yday=203, tm_isdst=-1)” |
perf_counter()) |
精确计时(性能测试) | 耗时时间 |
sleep(2.5) |
程序暂停 | 停顿2.5秒 |
localtime() |
时间戳 -> struct_time | 时间类型转化 |
mktime() |
struct_time -> 时间戳 | 时间类型转化 |
time.time()
- 功能:获取当前的时间戳(1970年1月1日00:00:00 UTC至今的秒数)
- 示例:
import time
print(time.time()) # 输出:1753161307.4428105(当前时间)
time.ctime()
- 功能:获取可读的时间字符串
- 示例:
print(time.ctime())
# 输出:“Tue Jul 22 13:15:07 2025”
time.localtime()
- 功能:获取结构化时间对象(包含年、月、日等字段)
- 示例:
struct_time = time.localtime()
print(struct_time.tm_year, struct_time.tm_mon,struct_time.tm_mday)
# 输出:2025 7 22
time.time()import time print(time.time()) # 输出:1753161307.4428105(当前时间)
time.ctime()time.localtime()
time.strftime()
- 功能:时间格式化
- 示例:
struct_time = time.localtime()
formatted = time.strftime("%Y-%m-%d %H:%M:%S",struct_time)
# 输出 2025-07-22 13:33:09
time.strptime()
- 功能:时间解析(字符串 -> struct_time)
- 示例:
parsed_time = time.strptime("2025-07-22", "%Y-%m-%d")
print(parsed_time)
# 输出:
# time.struct_time(tm_year=2025, tm_mon=7, tm_mday=22, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=1, tm_yday=203, tm_isdst=-1)
time.strftime()time.strptime()
time.pref_counter()
- 功能:精确计时(性能测试)
- 示例:
start = time.perf_counter()
time.sleep(2)
end = time.perf_counter()
print(f"执行耗时:{end - start:.4f}秒")
# 输出:
# 执行耗时:2.0003秒
time.sleep()
- 功能:程序暂停
- 示例:
start = int(time.time())
time.sleep(2)
end = int(time.time())
print(f"停顿{end - start:.2f}秒")
# 输出:
# 停顿2.00秒
time.pref_counter()time.sleep()
- 时间戳 -> struct_time
- 方法:time.localtime()
- 示例:
timestamp = time.time()
ts_to_struct = time.localtime(timestamp)
print(ts_to_struct)
# 输出:
# time.struct_time(tm_year=2025, tm_mon=7, tm_mday=22, tm_hour=13, tm_min=50, tm_sec=49, tm_wday=1, tm_yday=203, tm_isdst=0)
struct_time -> 时间戳
- 方法:time.mktime()
- 示例:
struct_time = time.localtime()
struct_to_ts = time.mktime(struct_time)
print(struct_to_ts)
# 输出:
# 1753163493.0
struct_time -> 时间戳
生成随机数和实现随机选择功能
生成随机数和实现随机选择功能
| 方法 | 功能 | 示例 |
|---|---|---|
random() |
[0.0, 1.0) 的随机浮点数 |
0.374501 |
uniform(a, b) |
[a, b] 的随机浮点数 |
7.823 |
randint(a, b) |
[a, b] 的随机整数 |
4 |
randrange(start, stop, step) |
指定范围的随机整数 | 45 |
choice(seq) |
序列中的随机元素 | “green” |
choices(population, k) |
有放回抽样 | [‘B’, ‘C’] |
sample(population, k) |
无放回抽样 | [3, 1, 5] |
shuffle(seq) |
原地打乱序列 | [‘K’, ‘A’, ‘J’, ‘Q’] |
gauss(mu, sigma) |
高斯分布随机数 | 0.735 |
seed(a) |
初始化随机种子 | 固定随机序列 |
getstate() / setstate() |
保存/恢复状态 | 重现随机序列 |
random.random()
- 功能:生成
[0.0, 1.0) 之间的随机浮点数。
- 示例:
import random
print(random.random()) # 输出:0.374501(随机值)
控制小数位数
- 内置函数/四舍五入
round(random.random(), 3) # 默认 3 位小数
- 格式化
formatted = f{random.random():.3f} # 默认 3 位小数
random.uniform(a, b)
- 功能:生成
[a, b] 之间的随机浮点数。
- 示例:
print(random.uniform(2, 10)) # 输出:7.342(随机浮点数)
random.random()[0.0, 1.0) 之间的随机浮点数。import random print(random.random()) # 输出:0.374501(随机值)
控制小数位数
- 内置函数/四舍五入
round(random.random(), 3) # 默认 3 位小数 - 格式化
formatted = f{random.random():.3f} # 默认 3 位小数
random.uniform(a, b)[a, b] 之间的随机浮点数。print(random.uniform(2, 10)) # 输出:7.342(随机浮点数)
random.randint(a, b)
- 功能:生成
[a, b] 之间的随机整数(包含两端)。
- 示例:
print(random.randint(1, 10)) # 输出:3
random.randrange(start, stop, step)
- 功能:从
range(start, stop, step) 中随机选择一个整数 [start, stop) 左开右闭。
- 示例:
print(random.randrange(0, 100, 5)) # 输出:45(0,5,10,...,95 中的随机数)
random.randint(a, b)[a, b] 之间的随机整数(包含两端)。print(random.randint(1, 10)) # 输出:3
random.randrange(start, stop, step)range(start, stop, step) 中随机选择一个整数 [start, stop) 左开右闭。print(random.randrange(0, 100, 5)) # 输出:45(0,5,10,...,95 中的随机数)
random.choice(seq)
- 功能:从非空序列中随机选择一个元素。
- 示例:
colors = ['red', 'green', 'blue']
print(random.choice(colors)) # 输出:'green'(随机颜色)
random.choices(population, weights=None, k=1)
- 功能:从序列中有放回地随机抽取
k 个元素(可设置权重)。
- 示例:
result = random.choices(['A', 'B', 'C'], weights=[0.2, 0.5, 0.3], k=2)
print(result) # 输出:['B', 'C'](权重越高越可能被选中)
random.sample(population, k)
- 功能:从序列中无放回地随机抽取
k 个唯一元素。
- 示例:
numbers = [1, 2, 3, 4, 5]
print(random.sample(numbers, 3)) # 输出:[3, 1, 5](随机不重复的3个数)
random.shuffle(seq)
- 功能:将序列原地随机打乱(修改原序列)。
- 示例:
cards = ['A', 'K', 'Q', 'J']
random.shuffle(cards)
print(cards) # 输出:['K', 'A', 'J', 'Q'](顺序随机)
random.choice(seq)colors = ['red', 'green', 'blue'] print(random.choice(colors)) # 输出:'green'(随机颜色)
random.choices(population, weights=None, k=1)k 个元素(可设置权重)。result = random.choices(['A', 'B', 'C'], weights=[0.2, 0.5, 0.3], k=2) print(result) # 输出:['B', 'C'](权重越高越可能被选中)
random.sample(population, k)k 个唯一元素。numbers = [1, 2, 3, 4, 5] print(random.sample(numbers, 3)) # 输出:[3, 1, 5](随机不重复的3个数)
random.shuffle(seq)cards = ['A', 'K', 'Q', 'J'] random.shuffle(cards) print(cards) # 输出:['K', 'A', 'J', 'Q'](顺序随机)
random.gauss(mu, sigma)
- 功能:生成高斯分布(正态分布)的随机数,
mu 为均值,sigma 为标准差。
- 示例:
print(random.gauss(0, 1)) # 输出:0.735(标准正态分布中的随机值)
random.expovariate(lambd)
- 功能:生成指数分布的随机数,
lambd 是事件发生率的倒数。
- 用途: 多用于建模随机事件之间的时间间隔,尤其适合那些平均间隔已知但具体时间不确定的场景。
- 示例:
print(random.expovariate(1.0/5)) # 输出:3.2(模拟平均每5秒发生一次的事件间隔)
random.gauss(mu, sigma)mu 为均值,sigma 为标准差。print(random.gauss(0, 1)) # 输出:0.735(标准正态分布中的随机值)
random.expovariate(lambd)lambd 是事件发生率的倒数。print(random.expovariate(1.0/5)) # 输出:3.2(模拟平均每5秒发生一次的事件间隔)
random.seed(a=None)
- 功能:初始化随机数生成器,相同种子生成相同随机序列(用于可重复性)。
- 示例:
random.seed(42) # 固定种子
print(random.random()) # 输出:0.6394(每次运行结果相同)
random.seed(a=None)random.seed(42) # 固定种子 print(random.random()) # 输出:0.6394(每次运行结果相同)
random.getstate() 和 random.setstate(state)
- 功能:保存/恢复随机数生成器的内部状态。
- 原理: 这是伪随机数生成器的典型行为,用于保证生成的随机数序列具有不可预测性和多样性
- 示例:
state = random.getstate() # 保存当前状态
print(random.random()) # 随机数1
random.setstate(state) # 恢复状态
print(random.random()) # 再次输出相同的随机数1
random.getstate() 和 random.setstate(state)state = random.getstate() # 保存当前状态 print(random.random()) # 随机数1 random.setstate(state) # 恢复状态 print(random.random()) # 再次输出相同的随机数1
操作系统交互
| 方法 | 功能 | 备注 |
|---|---|---|
mkdir() |
创建单级目录 | 存在时创建的目录会报错 |
makedirs() |
创建多级目录 | exist_ok = True 已存在创建的目录不会报错 |
rename() |
重命名 | |
remove() |
删除文件 | |
scandir() |
目录遍历 | |
walk() |
递归遍历目录 | |
os.path.join() |
路径拼接 | |
os.path.dirname() 、os.path.basename()、os.path.splitext() |
路径分解 | |
os.path.exists、os.path.isfile()、os.path.isdir() |
路径检查 | |
os.getcwd() |
获取当前路径 | |
os.chdir() |
修改工作目录 | |
os.environ.get() |
获取环境变量 | |
os.system() |
执行系统命令 |
创建目录
- 方法:
os.mkdir() / os.makedirs()
- 示例:
import os
os.mkdir("1") # 创建单级目录 | 文件已存在会报错
os.makedirs("test/1", exist_ok=True) # 创建多级目录,exist_ok=True,当文件已存在时不报错
- 文件操作
- 方法:
os.rename() / os.remove()
- 示例:
import os
os.rename("old.txt","new.txt") # 重命名
os.remove("test/1.txt") # 删除文件
- 目录遍历
- 方法:
os.scandir()
- 示例:
import os
for entry in os.scandir("."): # . 遍历当前目录下的所有 文件 和 子目录
if entry.is_file():
print("文件:",entry)
# 输出:
# 文件: <DirEntry '1.py'>
创建目录os.mkdir() / os.makedirs()os.rename() / os.remove()os.scandir()
路径分解
- 方法:
os.path.dirname() | os.path.basename() | os.path.splitext()
- 示例:
import os
path = "/home/user/documents/report.txt"
# 获取路径组成部分
dir_path = os.path.dirname(path) # 目录路径: "/home/user/documents"
file_name = os.path.basename(path) # 完整文件名: "report.txt"
file_root, file_ext = os.path.splitext(file_name) # 分离主名和扩展名: ("report", ".txt")
# 完整路径拆分
head, tail = os.path.split(path) # ("/home/user/documents", "report.txt")
路径拼接
- 方法:
os.path.join()
- 示例:
full_path = os.path.join("dir","subdir","file.txt")
路径检查
- 方法:
os.path.exists() | os.path.isfile() | os.path.isdir()
- 示例:
print(os.path.exists("1.txt")) # 是否存在
print(os.path.isfile("1.txt")) # 是否是文件
print(os.path.isdir("1.txt")) # 是否是目录
# 输出答案(根据个人本地要查询的文件为主)
# True
# True
# False
路径分解os.path.dirname() | os.path.basename() | os.path.splitext()路径拼接os.path.join()路径检查os.path.exists() | os.path.isfile() | os.path.isdir()
os.getcwd()
- 功能:获取当前工作目录
- 示例:
cwd = os.getcwd()
os.chdir()
- 功能:修改工作目录
- 示例:
cwd = os.chdir("/new/path")
os.environ.get()
- 功能:获取环境变量
- 示例:
home_dir = os.enciron.get("HOME","default") # 查找 HOME 值,没有则返回默认值 default
print(home_dir)
os.system()
- 功能:执行系统命令
- 示例:
os.system("ls -l")
os.getcwd()os.chdir()os.environ.get()os.system()
系统相关功能
| 方法 | 功能 | 备注 |
|---|---|---|
sys.argv |
获取命令行参数 | |
sys.stdout |
重定向输出 | |
sys.stdin.readline().strip() |
读取标准输入 | |
sys.version |
获取Python版本信息 | |
sys.path |
获取模块搜索路径 | |
sys.exit(1) |
退出程序并返回状态码 | 非0状态码表示异常退出 |
sys.stdout.flush() |
刷新输出缓冲区 | 确保立即显示 |
sys.argv
- 功能:获取命令行参数
- 示例:
# 假设执行:python scripts.py arg1 arg2 --option=value
print(sys.argv) # ['script.py', 'arg1', 'arg2', '--option=value']
# 实际应用:处理命令行选项
if len()sys.argv) > 1:
action = sys.argv[1] # arg1
if action == "start":
print("")
elif action == "stop":
print("")
sys.argv
sys.stdout
- 功能:重定向输出
- 示例:
with open('1.txt','w',encoding="utf-8-sig") as f:
sys.stdout = f # 重定向标准输出到文件
print("这条信息将写入文件")
sys.stdout = sys._stdout__ # 恢复标准输出
# 会将print中的内容写进 1.txt文件内
sys.stdin.readline().strip()
- 功能:读取标准输入
- 示例:
print("请输入内容:")
user_input = sys.stdin.readline().strip()
print(f"您输入了:{user_input}")
# 输出:
"""
请输入内容:
1 2 3
您输入了:1 2 3
"""
sys.stdoutsys.stdin.readline().strip()
sys.version
- 功能:获取
Python版本信息
- 示例:
print(sys.version)
# 输出
"""
3.11.9 (tags/v3.11.9:de54cf5, Apr 2 2024, 10:12:12) [MSC v.1938 64 bit (AMD64)]
"""
sys.path
- 功能:获取模块搜索路径
- 示例:
print(sys.path)
# 输出列表形式,包含Python查找模块的路径
sys.platform
- 功能:获取操作系统平台
- 示例:
print(sys.platform) # 'win32', 'linux', 'darwin' (macOS)
# 输出
"""
win32
"""
sys.versionPython版本信息sys.pathsys.platform
sys.exit(n)
- 功能:退出程序并返回状态码(n=0时,正常退出;n=1《或是其它数字》时表示异常退出)
- 场景:通常用于脚本或程序中发生错误时提前退出,表示异常终止
- 示例:
if error_occurred:
sys.exit(1) # 非0状态码表示异常退出
sys.stdout.flush()
print("处理中...", end="")
sys.stdout.flush()
# 执行耗时操作...
print("完成!")
sys.exit(n)sys.stdout.flush()
JSON 数据处理
| 方法 | 功能 |
|---|---|
json.dumps() |
Python -> JSON字符串 |
json.loads() |
JSON字符串 -> Python |
json.dump |
写入JSON文件 |
json.load() |
读取JSON文件 |
Python -> JSON字符串
- 方法:
json.dumps()
- 示例:
import json
data = {
"name": "Alice",
"age": 30,
"hobbies": ["reading"],
"is_student": False,
}
json_str = json.dumps(data, indent=2)
print(json_str)
# 输出:
"""
{
"name": "Alice",
"age": 30,
"hobbies": [
"reading",
"hiking"
],
"is_student": false
}
"""
JSON字符串 -> Python
- 方法:
json.loads()
- 示例:
restored_data = json.loads(json_str)
print(restored_data["name"]) # "Alice"
Python -> JSON字符串json.dumps()JSON字符串 -> Pythonjson.loads()
json.dump()
- 功能:写入JSON文件
- 示例:
with open("data.json", "w") as f:
json.dump(data, f, indent=4) # 控制为 4 缩进空格
json.load()
- 功能:读取JSON文件
- 示例:
with open("data.json") as f:
loaded_data = json.load(f)
json.dump()json.load()
# 处理自定义对象
class User:
def __init__(self, name, age):
self.name = name
self.age = age
# 自定义序列化方法
def user_encoder(obj):
if isinstance(obj, User): # 判断 obj 是否是 User 的实例
return {"name": obj.name, "age": obj.age}
raise TypeError(f"Object of type {obj.__class__.__name__} is not JSON serializable")
user = User("Bob", 40)
user_json = json.dumps(user, default=user_encoder) # {"name": "Bob", "age": 40}
# 自定义反序列化方法
def user_decoder(dct):
if "name" in dct and "age" in dct:
return User(dct["name"], dct["age"])
return dct
restored_user = json.loads(user_json, object_hook=user_decoder)
print(restored_user.name) # "Bob"
```
到此这篇关于Python常见模块及其用法示例详解的文章就介绍到这了,更多相关Python常见模块用法内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!
您可能感兴趣的文章:
- Python的subprocess模块总结
- Python os模块介绍
- Python内置模块turtle绘图详解
- Python subprocess模块详细解读
- Python之re模块详解
- Python模块汇总(常用第三方库)
- python中requests模块的使用方法