如何将CSV文件指定单行(排除表头)追加至另一CSV文件
解决CSV单追加指定行的问题
你的代码现在的问题很明确:一是用read()读取了整个文件内容,所以会把Preliminary.csv的所有行都复制过去;二是手动加\n的方式容易导致换行混乱,出现内容错位的情况。下面给你两种可靠的解决方法:
方法一:使用Python内置的csv模块(推荐)
用csv模块处理CSV文件更规范,能自动处理分隔符、引号等特殊情况,避免格式错误:
import csv # 读取Preliminary.csv的第二行(跳过表头) with open('Preliminary.csv', 'r', newline='') as f1: reader = csv.reader(f1) next(reader) # 跳过表头行 target_row = next(reader) # 获取第二行内容 # 追加到Primary.csv末尾 with open('Primary.csv', 'a', newline='') as f2: writer = csv.writer(f2) writer.writerow(target_row)
代码说明:
newline=''是csv模块的推荐写法,能保证跨平台的换行一致性。next(reader)会跳过第一行(表头),再调用一次就拿到第二行数据。writerow()会自动处理换行,不需要手动加\n,避免多余空行或行连接的问题。
方法二:直接按行读取(适合简单CSV场景)
如果你的CSV没有复杂格式(比如没有带逗号的字段),也可以直接按行读取:
# 读取目标行 with open('Preliminary.csv', 'r') as f1: lines = f1.readlines() if len(lines) >= 2: target_line = lines[1].rstrip('\n') # 取第二行,去掉末尾的换行符 # 追加到目标文件 with open('Primary.csv', 'a') as f2: # 先检查目标文件末尾是否有换行,避免内容连在一起 f2.seek(0, 2) # 移动到文件末尾 if f2.tell() > 0: # 如果文件不为空 f2.write('\n') f2.write(target_line)
代码说明:
readlines()把文件所有行读成列表,lines[1]就是第二行(列表索引从0开始)。rstrip('\n')去掉行尾的换行符,避免后续手动加换行时出现重复空行。seek(0, 2)和tell()用来判断文件是否为空,确保追加时换行正确,不会出现内容和最后一行连在一起的情况。
内容的提问来源于stack exchange,提问作者Coder1044
相关产品推荐
相关产品推荐

