Python实用速查表:日常任务的高效编程指南
文章目录
- Python实用速查表:日常任务的高效编程指南
-
- 一、引言
- 二、使用文件
-
- 1. 读取文件
- 2. 写入文件
- 3. 追加到文件
- 4. 将行读入列表
- 5. 迭代文件中的每一行
- 6. 检查文件是否存在
- 7. 将列表写入文件
- 8. 对多个文件使用with块
- 9. 删除文件
- 10. 读取和写入二进制文件
- 三、使用简单的HTTP API
-
- 1. 基本GET请求
- 2. 带有查询参数的GET请求
- 3. 处理HTTP错误
- 4. 设置请求的超时时间
- 5. 在请求中使用标头
- 6. 带有JSON有效负载的POST请求
- 7. 处理响应编码
- 8. 将会话与请求一起使用
- 9. 处理重定向
- 10. 流式处理大型响应
- 四、使用列表
-
- 1. 创建列表
- 2. 追加到列表
- 3. 插入到列表
- 4. 从列表中删除
- 5. 从列表中弹出一个元素
- 6. 查找元素的索引
- 7. 列表切片
- 8. 列表推导
- 9. 对列表进行排序
- 10. 反转列表
- 五、使用字典
-
- 1. 创建词典
- 2. 添加或更新条目
- 3. 删除条目
- 4. 检查Key是否存在
- 5. 迭代Key
- 6. 迭代值
- 7. 迭代项目
- 8. 字典理解
- 9. 合并词典
- 10. 使用default获取值
- 六、使用操作系统
-
- 1. 导航文件路径
- 2. 列出目录内容
- 3. 创建目录
- 4. 删除文件和目录
- 5. 执行Shell命令
- 6. 使用环境变量
- 7. 更改当前工作目录
- 8. 路径存在和类型
- 9. 使用临时文件
- 10. 获取系统信息
- 七、使用CLI(命令行界面)
-
- 1. 读取用户输入
- 2. 打印到STDOUT
- 3. 格式打印
- 4. 从STDIN读取行
- 5. 写信给STDERR
- 6. 重定向STDOUT
- 7. 重定向STDERR
- 8. 提示输入密码
- 9. 命令行参数
- 10. 使用Argparse进行复杂的CLI交互
- 八、使用数学运算和排列
-
- 1. 基本算术运算
- 2. 使用复数
- 3. 数学函数
- 4. 生成排列
- 5. 生成组合
- 6. 随机数生成
- 7. 使用分数
- 8. 统计函数
- 9. 矩阵运算
- 10. 三角函数
- 九、使用日期和时间
-
- 1. 获取当前日期和时间
- 2. 日期计算
- 3. 时区处理
- 4. 解析日期字符串
- 十、使用正则表达式
-
- 1. 基本模式匹配
- 2. 提取信息
- 3. 替换文本
- 4. 分割文本
- 5. 验证格式
- 十一、多线程与多进程
-
- 1. 多线程基础
- 2. 使用`threading`模块
- 3. 多进程基础
- 4. 使用`multiprocessing`模块
- 5. 线程池与进程池
- 6. 使用`concurrent.futures`模块
- 7. 多线程与多进程的选择
- 十二、数据库操作
-
- 1. 数据库操作概述
- 2. MySQL数据库操作
- 3. PostgreSQL数据库操作
- 4. 将数据库查询结果转换为Pandas格式
- 十三、自动化脚本与任务调度
-
- 1. 自动化脚本基础
- 2. 使用`subprocess`模块执行外部命令
- 3. 任务调度基础
- 4. 使用`APScheduler`库进行任务调度
- 十四、图像处理
-
- 1. 图像处理概述
- 2. 图像基本操作
- 3. 图像裁剪与缩放
- 4. 图像滤镜与特效
- 5. 图像合成与混合
- 十五、文本处理
-
- 1. 大批量文件打开与处理
- 2. 字符编码处理
- 3. 常用正则表达式应用
- 十六、日志记录与调试
-
- 1. 日志记录与调试的重要性
- 2. 使用`logging`模块记录日志
- 3. 使用`loguru`进行高级日志记录
- 4. 使用`structlog`进行结构化日志记录
- 5. 调试技巧
- 十七、性能优化
-
- 1. 性能优化概述
- 2. 性能分析工具
- 3. 代码优化策略
- 4. 使用`numba`加速计算密集型任务(需额外安装)
- 5. 内存管理优化
- 十八、安全与加密
-
- 1. 密码哈希
- 2. 数据加密与解密
- 3. 安全随机数生成
- 4. 防止SQL注入
- 5. 防止跨站脚本攻击(XSS)
- 6. 安全通信(HTTPS)
一、引言
这份速查表源于实际需求。
我将各个部分划分为逻辑连贯的区域,这些区域通常协同工作。如此一来,可以迅速跳转到感兴趣的部分,并找到与特定任务或主题最为相关的内容。
这其中包括文件操作、API交互、电子表格处理、数学计算以及对列表和字典等数据结构的操作。此外,我还会着重介绍一些实用的库,以增强您的Python工具包,这些库在Python的常见应用领域中广泛使用。
二、使用文件
1. 读取文件
要读取文件的全部内容:
# 使用 with 语句打开文件,确保文件正确关闭
with open('example.txt', 'r') as file:
# 读取文件全部内容到 content 变量
content = file.read()
print(content)
2. 写入文件
要将文本写入文件,覆盖现有内容:
# 以写入模式('w')打开文件,这会覆盖原有内容
with open('example.txt', 'w') as file:
file.write('Hello, Python!')
3. 追加到文件
要将文本添加到现有文件的末尾:
# 以追加模式('a')打开文件,新内容会添加到文件末尾
with open('example.txt', 'a') as file:
file.write('\nAppend this line.')
4. 将行读入列表
要将文件逐行读入列表:
# readlines() 方法读取所有行并返回一个列表
with open('example.txt', 'r') as file:
lines = file.readlines() # 每一行作为列表中的一个元素
print(lines)
5. 迭代文件中的每一行
要处理文件中的每一行:
# 直接迭代文件对象,这种方式更节省内存
with open('example.txt', 'r') as file:
for line in file:
print(line.strip()) # strip() 移除行末的换行符
6. 检查文件是否存在
要在执行文件操作之前检查文件是否存在:
import os
# os.path.exists() 检查文件或目录是否存在
if os.path.exists('example.txt'):
print('File exists.')
else:
print('File does not exist.')
7. 将列表写入文件
要将列表的每个元素写入文件中的新行:
# 准备要写入的行列表
lines = ['First line', 'Second line', 'Third line']
# 以写入模式打开文件
with open('example.txt', 'w') as file:
for line in lines:
file.write(f'{
line}\n') # 每行末尾添加换行符
8. 对多个文件使用with块
要使用with
块同时处理多个文件:
# 同时打开源文件和目标文件
with open('source.txt', 'r') as source, open('destination.txt', 'w') as destination:
content = source.read() # 读取源文件内容
destination.write(content) # 写入目标文件
9. 删除文件
要安全删除文件(如果存在):
import os
# 先检查文件是否存在,再删除
if os.path.exists('example.txt'):
os.remove('example.txt') # 删除文件
print('File deleted.')
else:
print('File does not exist.')
10. 读取和写入二进制文件
要以二进制模式读取和写入文件(对图像、视频等有用):
# 以二进制读取模式('rb')打开源文件
with open('image.jpg', 'rb') as file:
content = file.read()
# 以二进制写入模式('wb')创建副本
with open('copy.jpg', 'wb') as file:
file.write(content)
三、使用简单的HTTP API
1. 基本GET请求
要使用GET请求从API端点获取数据:
# 导入requests库用于HTTP请求
import requests
# 发送GET请求并获取响应
response = requests.get('https://api.example.com/data')
data = response.json() # 将响应解析为JSON格式
print(data)
2. 带有查询参数的GET请求
要发送包含查询参数的GET请求:
import requests
# 定义查询参数字典
params = {
'key1': 'value1', 'key2': 'value2'}
# 发送带参数的GET请求
response = requests.get('https://api.example.com/search', params=params)
data = response.json()
print(data)
3. 处理HTTP错误
要优雅地处理可能的HTTP错误:
import requests
# 发送请求
response = requests.get('https://api.example.com/data')
try:
# 检查响应状态码,如果不是2xx则抛出异常
response.raise_for_status()
data = response.json()
print(data)
except requests.exceptions.HTTPError as err:
print(f'HTTP Error: {
err}')
4. 设置请求的超时时间
要为API请求设置超时以避免无限期挂起:
import requests
try:
# timeout=5 表示如果服务器5秒内没有响应就抛出异常
response = requests.get('https://api.example.com/data', timeout=5)
data = response.json()
print(data)
except requests.exceptions.Timeout:
print('The request timed out')
5. 在请求中使用标头
要在请求中包含标头(例如,用于授权):
import requests
# 定义请求头,包含授权信息
headers = {
'Authorization': 'Bearer YOUR_ACCESS_TOKEN'}
# 发送带有自定义头的请求
response = requests.get('https://api.example.com/protected', headers=headers)
data = response.json()
print(data)
6. 带有JSON有效负载的POST请求
要使用带有JSON负载的POST请求将数据发送到API端点:
import requests
# 准备要发送的JSON数据
payload = {
'key1': 'value1', 'key2': 'value2'}
# 设置Content-Type头
headers = {
'Content-Type': 'application/json'}
# 发送POST请求,自动将payload转换为JSON
response = requests.post('https://api.example.com/submit', json=payload, headers=headers)
print(response.json())
7. 处理响应编码
要正确处理响应编码:
import requests
# 发送请求
response = requests.get('https://api.example.com/data')
# 设置响应的编码为utf-8
response.encoding = 'utf-8'
# 获取解码后的文本内容
data = response.text
print(data)
8. 将会话与请求一起使用
要使用session对象向同一主机发出多个请求,以提高性能:
import requests
# 创建会话对象,在多个请求之间复用连接
with requests.Session() as session:
# 为所有请求设置通用的头信息
session.headers.update({
'Authorization': 'Bearer YOUR_ACCESS_TOKEN'})
# 使用会话发送请求
response = session.get('https://api.example.com/data')
print(response.json())
9. 处理重定向
要处理或禁用请求中的重定向:
import requests
# allow_redirects=False 禁止自动跟随重定向
response = requests.get('https://api.example.com/data', allow_redirects=False)
print(response.status_code) # 如果有重定向会返回3xx状态码
10. 流式处理大型响应
要流式传输大型响应以块形式处理,而不是将其全部加载到内存中:
import requests
# stream=True 启用流式传输
response = requests.get('https://api.example.com/large-data', stream=True)
# 以1KB为单位逐块处理响应内容
for chunk in response.iter_content(chunk_size=1024):
process(chunk) # 处理每个数据块
四、使用列表
1. 创建列表
要创建一个列表:
# 创建一个包含四个元素的基本列表
elements = ['Earth', 'Air', 'Fire', 'Water']
2. 追加到列表
要将新元素追加到列表末尾:
# append() 方法将元素添加到列表末尾
elements.append('Aether')
3. 插入到列表
要在列表中的特定位置插入元素:
# insert(位置, 元素) 在指定位置插入新元素
elements.insert(1, 'Spirit') # 在索引1处插入'Spirit'
4. 从列表中删除
要从列表中按值删除元素:
# remove() 删除第一个匹配的元素
elements.remove('Earth') # 删除值为'Earth'的元素
5. 从列表中弹出一个元素
要删除并返回给定索引处的元素(默认为最后一项):
# pop() 移除并返回最后一个元素
last_element = elements.pop() # 不带参数时删除最后一个元素
6. 查找元素的索引
要查找元素第一次出现的索引:
# index() 返回元素首次出现的位置
index_of_air = elements.index('Air') # 获取'Air'的索引位置
7. 列表切片
要对列表进行切片,获取子列表:
# 切片语法:[起始:结束:步长],结果包含起始不包含结束
sub_elements = elements[1:4] # 获取索引1到3的元素
8. 列表推导
要通过将表达式应用于现有列表的每个元素来创建新列表:
# 列表推导式提供了创建新列表的简洁方式
lengths = [len(element) for element in elements] # 计算每个元素的长度
9. 对列表进行排序
要按升序对列表进行排序(就地):
# sort() 方法直接修改原列表
elements.sort() # 按字母顺序排序
10. 反转列表
要就地反转列表的元素:
# reverse() 方法将列表元素顺序颠倒
elements.reverse() # 反转列表中元素的顺序
五、使用字典
1. 创建词典
要创建一个新词典:
# 创建包含键值对的字典
elements = {
'Hydrogen': 'H', 'Helium': 'He', 'Lithium': 'Li'} # 元素名称和符号的映射
2. 添加或更新条目
要添加新条目或更新现有条目:
# 使用键值赋值来添加或更新字典条目
elements['Carbon'] = 'C' # 添加新元素或更新已存在的元素
3. 删除条目
要从字典中删除条目:
# del 语句用于删除字典中的条目
del elements['Lithium'] # 删除键为'Lithium'的条目
4. 检查Key是否存在
要检查键是否存在于字典中:
# 使用 in 运算符检查键是否存在
if 'Helium' in elements: # 检查'Helium'是否在字典中
print('Helium is present')
5. 迭代Key
要遍历字典中的键:
# 直接遍历字典会遍历所有的键
for element in elements:
print(element)
6. 迭代值
要遍历字典中的值:
# 使用values()方法遍历字典的所有值
for symbol in elements.values():
print(symbol)
7. 迭代项目
要同时遍历字典的键和值:
# 使用items()方法同时获取键和值
for element, symbol in elements.items():
print(f'{
element}: {
symbol}')
8. 字典理解
要通过对可迭代对象施咒来创建新字典:
# 使用字典推导式创建平方数字典
squares = {
x: x**2 for x in range(5)} # 生成0-4的平方映射
9. 合并词典
要合并两个或多个词典,形成它们条目的新联盟:
# 创建两个独立的字典
alchemists = {
'Paracelsus': 'Mercury'}
philosophers = {
'Plato': 'Aether'}
# 使用解包运算符(**)合并字典
merged = {
**alchemists, **philosophers} # Python 3.5+的字典合并方式
10. 使用default获取值
要安全地检索值,为缺失的键提供默认值:
# get()方法在键不存在时返回默认值
element = elements.get('Neon', 'Unknown') # 如果'Neon'不存在,返回'Unknown'
六、使用操作系统
1. 导航文件路径
要制作和剖析路径,确保跨操作系统的兼容性:
import os
# 使用os.path.join()创建跨平台兼容的路径
path = os.path.join('mystic', 'forest', 'artifact.txt')
# 获取路径中的目录部分
directory =