这份速查表源于实际需求。
我将各个部分划分为逻辑连贯的区域,这些区域通常协同工作。如此一来,可以迅速跳转到感兴趣的部分,并找到与特定任务或主题最为相关的内容。
这其中包括文件操作、API交互、电子表格处理、数学计算以及对列表和字典等数据结构的操作。此外,我还会着重介绍一些实用的库,以增强您的Python工具包,这些库在Python的常见应用领域中广泛使用。
要读取文件的全部内容:
# 使用 with 语句打开文件,确保文件正确关闭
with open('example.txt', 'r') as file:
# 读取文件全部内容到 content 变量
content = file.read()
print(content)
要将文本写入文件,覆盖现有内容:
# 以写入模式('w')打开文件,这会覆盖原有内容
with open('example.txt', 'w') as file:
file.write('Hello, Python!')
要将文本添加到现有文件的末尾:
# 以追加模式('a')打开文件,新内容会添加到文件末尾
with open('example.txt', 'a') as file:
file.write('\nAppend this line.')
要将文件逐行读入列表:
# readlines() 方法读取所有行并返回一个列表
with open('example.txt', 'r') as file:
lines = file.readlines() # 每一行作为列表中的一个元素
print(lines)
要处理文件中的每一行:
# 直接迭代文件对象,这种方式更节省内存
with open('example.txt', 'r') as file:
for line in file:
print(line.strip()) # strip() 移除行末的换行符
要在执行文件操作之前检查文件是否存在:
import os
# os.path.exists() 检查文件或目录是否存在
if os.path.exists('example.txt'):
print('File exists.')
else:
print('File does not exist.')
要将列表的每个元素写入文件中的新行:
# 准备要写入的行列表
lines = ['First line', 'Second line', 'Third line']
# 以写入模式打开文件
with open('example.txt', 'w') as file:
for line in lines:
file.write(f'{
line}\n') # 每行末尾添加换行符
要使用with
块同时处理多个文件:
# 同时打开源文件和目标文件
with open('source.txt', 'r') as source, open('destination.txt', 'w') as destination:
content = source.read() # 读取源文件内容
destination.write(content) # 写入目标文件
要安全删除文件(如果存在):
import os
# 先检查文件是否存在,再删除
if os.path.exists('example.txt'):
os.remove('example.txt') # 删除文件
print('File deleted.')
else:
print('File does not exist.')
要以二进制模式读取和写入文件(对图像、视频等有用):
# 以二进制读取模式('rb')打开源文件
with open('image.jpg', 'rb') as file:
content = file.read()
# 以二进制写入模式('wb')创建副本
with open('copy.jpg', 'wb') as file:
file.write(content)
要使用GET请求从API端点获取数据:
# 导入requests库用于HTTP请求
import requests
# 发送GET请求并获取响应
response = requests.get('https://api.example.com/data')
data = response.json() # 将响应解析为JSON格式
print(data)
要发送包含查询参数的GET请求:
import requests
# 定义查询参数字典
params = {
'key1': 'value1', 'key2': 'value2'}
# 发送带参数的GET请求
response = requests.get('https://api.example.com/search', params=params)
data = response.json()
print(data)
要优雅地处理可能的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}')
要为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')
要在请求中包含标头(例如,用于授权):
import requests
# 定义请求头,包含授权信息
headers = {
'Authorization': 'Bearer YOUR_ACCESS_TOKEN'}
# 发送带有自定义头的请求
response = requests.get('https://api.example.com/protected', headers=headers)
data = response.json()
print(data)
要使用带有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())
要正确处理响应编码:
import requests
# 发送请求
response = requests.get('https://api.example.com/data')
# 设置响应的编码为utf-8
response.encoding = 'utf-8'
# 获取解码后的文本内容
data = response.text
print(data)
要使用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())
要处理或禁用请求中的重定向:
import requests
# allow_redirects=False 禁止自动跟随重定向
response = requests.get('https://api.example.com/data', allow_redirects=False)
print(response.status_code) # 如果有重定向会返回3xx状态码
要流式传输大型响应以块形式处理,而不是将其全部加载到内存中:
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) # 处理每个数据块
要创建一个列表:
# 创建一个包含四个元素的基本列表
elements = ['Earth', 'Air', 'Fire', 'Water']
要将新元素追加到列表末尾:
# append() 方法将元素添加到列表末尾
elements.append('Aether')
要在列表中的特定位置插入元素:
# insert(位置, 元素) 在指定位置插入新元素
elements.insert(1, 'Spirit') # 在索引1处插入'Spirit'
要从列表中按值删除元素:
# remove() 删除第一个匹配的元素
elements.remove('Earth') # 删除值为'Earth'的元素
要删除并返回给定索引处的元素(默认为最后一项):
# pop() 移除并返回最后一个元素
last_element = elements.pop() # 不带参数时删除最后一个元素
要查找元素第一次出现的索引:
# index() 返回元素首次出现的位置
index_of_air = elements.index('Air') # 获取'Air'的索引位置
要对列表进行切片,获取子列表:
# 切片语法:[起始:结束:步长],结果包含起始不包含结束
sub_elements = elements[1:4] # 获取索引1到3的元素
要通过将表达式应用于现有列表的每个元素来创建新列表:
# 列表推导式提供了创建新列表的简洁方式
lengths = [len(element) for element in elements] # 计算每个元素的长度
要按升序对列表进行排序(就地):
# sort() 方法直接修改原列表
elements.sort() # 按字母顺序排序
要就地反转列表的元素:
# reverse() 方法将列表元素顺序颠倒
elements.reverse() # 反转列表中元素的顺序
要创建一个新词典:
# 创建包含键值对的字典
elements = {
'Hydrogen': 'H', 'Helium': 'He', 'Lithium': 'Li'} # 元素名称和符号的映射
要添加新条目或更新现有条目:
# 使用键值赋值来添加或更新字典条目
elements['Carbon'] = 'C' # 添加新元素或更新已存在的元素
要从字典中删除条目:
# del 语句用于删除字典中的条目
del elements['Lithium'] # 删除键为'Lithium'的条目
要检查键是否存在于字典中:
# 使用 in 运算符检查键是否存在
if 'Helium' in elements: # 检查'Helium'是否在字典中
print('Helium is present')
要遍历字典中的键:
# 直接遍历字典会遍历所有的键
for element in elements:
print(element)
要遍历字典中的值:
# 使用values()方法遍历字典的所有值
for symbol in elements.values():
print(symbol)
要同时遍历字典的键和值:
# 使用items()方法同时获取键和值
for element, symbol in elements.items():
print(f'{
element}: {
symbol}')
要通过对可迭代对象施咒来创建新字典:
# 使用字典推导式创建平方数字典
squares = {
x: x**2 for x in range(5)} # 生成0-4的平方映射
要合并两个或多个词典,形成它们条目的新联盟:
# 创建两个独立的字典
alchemists = {
'Paracelsus': 'Mercury'}
philosophers = {
'Plato': 'Aether'}
# 使用解包运算符(**)合并字典
merged = {
**alchemists, **philosophers} # Python 3.5+的字典合并方式
要安全地检索值,为缺失的键提供默认值:
# get()方法在键不存在时返回默认值
element = elements.get('Neon', 'Unknown') # 如果'Neon'不存在,返回'Unknown'
要制作和剖析路径,确保跨操作系统的兼容性:
import os
# 使用os.path.join()创建跨平台兼容的路径
path = os.path.join('mystic', 'forest', 'artifact.txt')
# 获取路径中的目录部分
directory = os.path.dirname(path)
# 获取路径中的文件名部分
artifact_name = os.path.basename(path)
要揭示目录中的所有文件和子目录:
import os
# listdir()返回指定目录中的所有文件和文件夹名称
contents = os.listdir('enchanted_grove')
print