介绍
在这个项目中,你将学习如何根据员工电话号码的最后一位数字对他们进行分组,并将这些组保存到单独的 CSV 文件中。这个项目旨在帮助你提升使用 Python 进行文件处理、数据处理和 CSV 文件管理的技能。
👀 预览
## 输入:
python group.py
ls
ls Groups
## 输出:
Groups roster.csv group.py
Tail_num_0.csv Tail_num_2.csv Tail_num_4.csv Tail_num_6.csv Tail_num_8.csv
Tail_num_1.csv Tail_num_3.csv Tail_num_5.csv Tail_num_7.csv Tail_num_9.csv
🎯 任务
在这个项目中,你将学习:
- 如何设置项目环境并准备必要的文件
- 如何实现根据员工电话号码的最后一位数字对他们进行分组的逻辑
- 如何将分组后的数据保存到单独的 CSV 文件中
- 如何验证生成的 CSV 文件的内容
🏆 成果
完成这个项目后,你将能够:
- 理解如何在 Python 中处理 CSV 文件
- 提升数据处理和分组的技能
- 展示以编程方式创建和管理文件及文件夹的能力
- 将你的 Python 编程知识应用于实际问题
实现分组逻辑
在这一步中,你将实现根据员工电话号码的最后一位数字对他们进行分组,并将这些组保存到单独的 CSV 文件中的逻辑。
- 在文本编辑器中打开
group.py文件。 - 将以下代码添加到
group()函数中:
import os
import csv
def group():
"""
根据员工电话号码的最后一位数字对他们进行分组,并将每个组保存到一个单独的 CSV 文件中。
从名为 'roster.csv' 的 CSV 文件中读取员工数据,根据电话号码的最后一位数字对他们进行分组,
并将每个组保存到名为 'Groups' 的文件夹中的一个单独的 CSV 文件中。
CSV 文件应具有以下格式:
- 第一行为标题行。
- 其余行包含员工数据,每行代表一名员工。
:return: 无
"""
## 如果 'Groups' 文件夹不存在,则创建它
if not os.path.exists("Groups"):
os.makedirs("Groups")
## 打开 'roster.csv' 文件进行读取
with open("roster.csv", "r") as file:
reader = csv.reader(file)
header = next(reader) ## 读取 CSV 文件的标题行
## 创建一个字典,用于存储根据电话号码最后一位数字分组的员工组
groups = {}
for row in reader:
phone_number = row[1] ## 从当前行获取电话号码
last_digit = int(phone_number[-1]) ## 将电话号码的最后一位数字提取为整数
## 根据最后一位数字将当前行追加到相应的组中
groups.setdefault(last_digit, []).append(row)
## 遍历这些组,并将每个组保存到一个单独的 CSV 文件中
for tail_num, employees in groups.items():
filename = f"Groups/Tail_num_{tail_num}.csv" ## 为当前组生成文件名
with open(filename, "w", newline="") as file:
writer = csv.writer(file)
writer.writerow(header) ## 将标题行写入 CSV 文件
writer.writerows(employees) ## 将员工数据写入 CSV 文件
if __name__ == "__main__":
group() ## 调用 'group' 函数以执行分组和保存过程
- 保存
group.py文件。
运行分组脚本
在这一步中,你将运行 group.py 脚本来生成分组后的 CSV 文件。
- 打开一个终端,并导航到
/home/labex/project目录。 - 运行以下命令来执行
group.py脚本:
python group.py
- 脚本运行完成后,验证
Groups文件夹及其内部生成的 CSV 文件是否已创建。
验证分组后的 CSV 文件
在这一步中,你将验证生成的 CSV 文件的内容。
- 使用终端导航到“Groups”文件夹。
- 使用“ls”命令列出“Groups”文件夹的内容。你应该会看到以下文件:
Tail_num_0.csv Tail_num_2.csv Tail_num_4.csv Tail_num_6.csv Tail_num_8.csv
Tail_num_1.csv Tail_num_3.csv Tail_num_5.csv Tail_num_7.csv Tail_num_9.csv
- 打开其中一个 CSV 文件(例如,“Tail_num_0.csv”),并验证该文件包含员工数据,第一行为标题,其余行包含员工信息。
恭喜你!你已成功完成了根据员工电话号码的最后一位数字对他们进行分组并将这些组保存到单独的 CSV 文件的项目。
总结
恭喜你!你已经完成了这个项目。你可以在 LabEx 中练习更多实验来提升你的技能。



