Python实用速查表:日常任务的高效编程指南

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 =
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Is code

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值