1. pathlib
pathlib 是Python 3.4版本引入的一个用于处理文件路径的库。它提供了一种更加面向对象的方式来处理文件路径,使得代码更加清晰易懂。
代码示例:
from pathlib import Path
# 创建一个路径对象
p = Path("/home/user/documents")
# 输出路径信息
print("父目录:", p.parent)
print("名称:", p.name)
print("是否为文件:", p.is_file())
print("是否存在:", p.exists())
# 拼接子路径
sub_path = p / "new_folder"
print("新路径:", sub_path)
# 创建目录
sub_path.mkdir(parents=True, exist_ok=True)
解释:
- Path 类提供了丰富的属性和方法来操作路径。
- parents 属性返回路径的父目录。
- name 属性返回路径的名称。
- is_file() 方法判断路径是否为文件。
- exists() 方法判断路径是否存在。
- / 运算符可以用来拼接路径。
- mkdir() 方法创建目录。
2. rich
rich 是一个强大的库,可以帮助我们在控制台中打印出丰富多彩的内容。无论是表格、进度条还是日志,都能以美观的形式展现出来。
代码示例:
from rich import print
from rich.table import Table
from rich.console import Console
console = Console()
# 打印彩色文本
print("[bold red]Hello, World![/bold red]")
# 创建一个表格
table = Table(title="员工信息")
table.add_column("姓名", style="cyan", no_wrap=True)
table.add_column("年龄", justify="right", style="green")
table.add_column("部门", style="magenta")
# 添加数据
table.add_row("张三", "25", "技术部")
table.add_row("李四", "30", "销售部")
# 打印表格
console.print(table)
解释:
- rich.print() 函数可以打印带有样式的内容。
- Table 类用于创建表格。
- add_column() 方法添加表格列。
- add_row() 方法添加行数据。
- console.print() 方法将表格打印到控制台。
3. pandas
pandas 是一个非常强大的数据分析库,提供了大量用于数据清洗、处理和分析的功能。
代码示例:
import pandas as pd
# 创建一个DataFrame
data = {
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'City': ['New York', 'Los Angeles', 'Chicago']
}
df = pd.DataFrame(data)
# 显示DataFrame
print(df)
# 数据筛选
print("\n筛选年龄大于30的人:")
print(df[df['Age'] > 30])
# 数据排序
print("\n按年龄排序:")
print(df.sort_values(by='Age'))
# 数据聚合
print("\n按城市分组计算平均年龄:")
print(df.groupby('City')['Age'].mean())
解释:
- pd.DataFrame() 创建一个DataFrame对象。
- df[df['Age'] > 30] 使用条件筛选数据。
- df.sort_values(by='Age') 对数据进行排序。
- df.groupby('City')['Age'].mean() 对数据进行分组并计算平均值。
4. typer
typer 是一个用于构建命令行界面(CLI)的应用库,它基于 click 库但提供了更简洁的语法和更好的类型提示支持。
代码示例:
import typer
app = typer.Typer()
@app.command()
def hello(name: str):
"""
打印问候语
"""
print(f"Hello, {name}!")
@app.command()
def goodbye(name: str, formal: bool = False):
"""
打印告别语
"""
if formal:
print(f"Goodbye, Mr. {name}. Have a nice day!")
else:
print(f"Bye, {name}!")
if __name__ == "__main__":
app()
解释:
- typer.Typer() 创建一个Typer对象。
- @app.command() 装饰器定义命令函数。
- hello 和 goodbye 函数分别定义了两个命令。
- name: str 参数类型注解用于类型检查。
- formal: bool = False 参数带有默认值和类型注解。
- app() 运行Typer应用程序。
5. click
click 是一个非常流行的库,用于构建命令行界面(CLI)。它提供了丰富的选项和参数设置功能。
代码示例:
import click
@click.command()
@click.option('--name', prompt='Your name', help='The person to greet.')
@click.option('--formal/--informal', default=False, help='Formal greeting or informal.')
def greet(name, formal):
"""
打印问候语
"""
if formal:
click.echo(f"Hello, Mr. {name}. How are you?")
else:
click.echo(f"Hi, {name}!")
if __name__ == '__main__':
greet()
解释:
- @click.command() 定义命令函数。
- @click.option() 装饰器定义命令行选项。
- prompt 参数提示用户输入。
- default 参数设置默认值。
- click.echo() 打印输出。
6. requests
requests 是一个非常流行的HTTP库,用于发送HTTP请求。它提供了简单易用的API,可以方便地获取网页内容或发送数据。
代码示例:
import requests
# 发送GET请求
response = requests.get("https://api.github.com")
print(response.status_code) # 输出状态码
print(response.json()) # 输出JSON数据
# 发送POST请求
url = "https://httpbin.org/post"
data = {'key': 'value'}
response = requests.post(url, data=data)
print(response.text) # 输出响应内容
解释:
- requests.get() 发送GET请求。
- requests.post() 发送POST请求。
- response.status_code 获取HTTP状态码。
- response.json() 解析JSON响应。
- response.text 获取响应文本内容。
7. tqdm
tqdm 是一个快速且灵活的进度条库,可以在循环中显示进度条,非常适合处理大量数据时显示进度。
代码示例:
from tqdm import tqdm
import time
# 创建一个进度条
for i in tqdm(range(10)):
# 模拟一些耗时操作
time.sleep(0.5)
# 自定义进度条
for i in tqdm(range(10), desc="Processing", unit="item"):
time.sleep(0.5)
解释:
- tqdm(range(10)) 创建一个进度条。
- desc 参数设置描述信息。
- unit 参数设置单位。
8. logging
logging 是Python自带的日志模块,用于记录程序运行过程中的各种信息,如调试、警告、错误等。
代码示例:
import logging
# 设置日志级别和格式
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')
# 记录不同级别的日志
logging.debug("This is a debug message")
logging.info("This is an info message")
logging.warning("This is a warning message")
logging.error("This is an error message")
logging.critical("This is a critical message")
解释:
- logging.basicConfig() 设置日志的基本配置。
- logging.debug(), logging.info(), logging.warning(), logging.error(), logging.critical() 分别记录不同级别的日志。
实战案例:数据处理自动化脚本
假设我们需要从多个CSV文件中提取数据,并将其合并成一个汇总文件。我们可以使用 pandas 和 pathlib 来实现这一功能。
代码示例:
import pandas as pd
from pathlib import Path
# 定义数据目录
data_dir = Path("data")
# 获取所有CSV文件
csv_files = list(data_dir.glob("*.csv"))
# 初始化空DataFrame
df = pd.DataFrame()
# 合并所有CSV文件
for file in csv_files:
temp_df = pd.read_csv(file)
df = pd.concat([df, temp_df], ignore_index=True)
# 保存汇总文件
output_file = Path("summary.csv")
df.to_csv(output_file, index=False)
print(f"汇总文件已保存到 {output_file}")
输出结果:
汇总文件已保存到 summary.csv
通过以上介绍,我们可以看到Python中有许多优秀的工具可以大大提高我们的开发效率。无论是文件路径处理、数据处理、命令行应用构建还是网络请求等,都有对应的工具来简化任务。希望这些工具能对你的日常工作有所帮助。