Python如何按文件名排序 将多文本文件内容逐行并排写入新文件
实现方案
你现有代码需要补全文件排序、内容读取、逐行合并三个核心环节,可直接运行的完整代码如下:
import glob # 匹配所有file开头的文件后排序 # 普通字符串排序写法 myfiles = sorted(glob.glob('file*')) # 如果存在file10、file11这类多数字文件名,建议用数字排序避免顺序错乱,替换成下面这行即可 # myfiles = sorted(glob.glob('file*'), key=lambda x: int(x.removeprefix('file'))) # 打开所有源文件准备读取 file_handles = [open(f, 'r', encoding='utf-8') for f in myfiles] # 逐行对齐拼接写入目标文件 with open('output.txt', 'w', encoding='utf-8') as outfile: # 同时遍历所有文件的对应行 for line_group in zip(*file_handles): # 去掉每行末尾的原有换行,用两个空格拼接(和示例格式一致) combined_line = ' '.join(line.rstrip('\n\r') for line in line_group) outfile.write(combined_line + '\n') # 关闭所有打开的源文件 for fh in file_handles: fh.close()
补充说明
- 如果各文件行数不一致,上述代码会以行数最少的文件为基准截断。如果需要保留最长文件的所有行,可以导入
itertools模块,把zip替换成itertools.zip_longest,缺失的行默认填空值即可 - 拼接分隔符可按需调整,比如需要制表符分隔就把
' '替换为'\t'
内容的提问来源于stack exchange,提问作者viraj moil
相关产品推荐
相关产品推荐

