1.题目要求
分别读取路径为
./middle/phone/base/1_student_0.txt,
./middle/vr/base/1_teacher.txt,
./nearby/phone/base/1_student_0.txt,
./nearby/vr/base/1_teacher.txt,
./outside/phone/base/1_student_0.txt,
./outside/vr/base/1_teacher.txt
里面的文件,并计算每个文件的行数,然后合并这些文件的内容到一个名为base_together.txt的文件中。
同时,还会输出每个文件的行数以及总行数,最后还会输出合并后文件的行数。
记录文件行数用于验证读取文件数量是否正确。
2.代码实现
# 使用Python的os模块和open函数来合并文件
import os# 定义要合并的文件列表
file_list = ["./middle/phone/base/1_student_0.txt","./middle/vr/base/1_teacher.txt","./nearby/phone/base/1_student_0.txt","./nearby/vr/base/1_teacher.txt","./outside/phone/base/1_student_0.txt","./outside/vr/base/1_teacher.txt",
]# 定义输出文件名
output_file = "base_together.txt"# 初始化行数计数器
total_lines = 0# 使用循环逐个读取文件
for file in file_list:# 使用os.path.basename获取文件名filename = os.path.basename(file)# 打印当前处理的文件名print(f"正在处理文件:{filename}")# 使用open函数以读模式打开当前文件with open(file, 'r') as infile:# 计算文件中的行数lines = sum(1 for line in infile)# 更新总行数计数器total_lines += lines# 打印当前文件的行数print(f"{filename} 有 {lines} 行")# 打印总行数
print(f"总共有 {total_lines} 行")# 使用open函数以写模式打开输出文件
with open(output_file, 'w') as outfile:for file in file_list:# 使用open函数以读模式打开当前文件with open(file, 'r') as infile:# 将当前文件的内容写入输出文件outfile.write(infile.read())# 使用open函数以读模式打开输出文件
with open(output_file, 'r') as infile:# 计算输出文件中的行数output_lines = sum(1 for line in infile)# 打印输出文件的行数print(f"{output_file} 有 {output_lines} 行")
输出结果:
3. 补充
其实 直接用 简单的shell ,cat
也可以实现文件合并功能。
$ cat ./middle/phone/base/1_student_0.txt ./middle/vr/base/1_teacher.txt ./nearby/phone/base/1_student_0.txt ./nearby/vr/base/1_teacher.txt ./outside/phone/base/1_student_0.txt ./outside/vr/base/1_teacher.txt > base_together.txt