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