本文以60名学生的两门课程成绩的数据文件(文件名分别为ReportCard1.txt和ReportCard2.txt)为例,分别记录着学生的学号、性别以及不同课程的成绩。
由于两个txt文档中学生的编号顺序打乱的,所以先将其按行索引排序:
sorted_files=''.join(sorted(open('E:/python学习笔记/代码和数据/学生成绩/ReportCard1.txt'), key=lambda s: s.split()[0],reverse=1))
open(r"E:/python学习笔记/代码和数据/sort_ReportCard1.txt", 'w').write("".join(sorted_files))
sorted_files=''.join(sorted(open('E:/python学习笔记/代码和数据/学生成绩/ReportCard2.txt'), key=lambda s: s.split()[0],reverse=1))
open(r"E:/python学习笔记/代码和数据/sort_ReportCard2.txt", 'w').write("".join(sorted_files))
代码说明:
join()函数语法: 'sep'.join(seq) 参数说明:sep:分隔符。可以为空 seq:要连接的元素序列、字符串、元组、字典,上面的语法即:以sep作为分隔符,将seq所有的元素合并成一个新的字符串 ;返回值:返回一个以分隔符sep连接各个元素后生成的字符串
sorted(iterable, cmp=None, key=None, reverse=False) :iterable 为要排序的对象,key是指定按照对象中的某一列来进行排序,这里即是第一列;reverse=1降序;需要注意的是sorted会返回一个新序列。
f.write()把排序后的序列写入新的txt文件中
排序之后,将其合并(若两个txt文件列索引顺序是一样的,则可以用下面的代码直接合并):
import os,sys
# 按行合并 两个txt文件 ###################################两个文件列索引的顺序相同
# 打开所需要合并的两个txt文件
file1path = 'E:/python学习笔记/代码和数据/sort_ReportCard1.txt '
file2path = 'E:/python学习笔记/代码和数据/sort_ReportCard2.txt'
file_1 = open(file1path, 'r', encoding='utf-8')
file_2 = open(file2path, 'r', encoding='utf-8')
list1 = []
for line in file_1.readlines():
ss = line.strip()
list1.append(ss)
file_1.close()
list2 = []
for line in file_2.readlines():
ss = line.strip()
list2.append(ss)
file_2.close()
# 创建新的txt文件,用来保存,
file_new = open('E:/python学习笔记/代码和数据/result2.txt', 'w', encoding='utf-8')
for i in range(len(list1)):
# 将两个txt文件合并到一行 中间用分隔符隔开
sline = list1[i] + '\t' + list2[i]
# 写入新的txt文件 换行
file_new.write(sline+'\n')
file_new.close()
f.read,f.readline,f.readlines:
f.read:一个一个读取txt文档中的元素;f.readlines按行读取;f.readline()只读取第一行
line.strip():删除读进去行的开头、结尾的空格