如何修改Python代码实现多CSV合并时添加空行分隔
实现CSV文件合并并在各文件内容间添加空行的方案
嘿,我来帮你搞定这个需求!你的现有代码已经在做CSV合并的基础工作了,要在各个被合并的CSV内容之间加空行其实很简单,核心就是在每写完一个CSV文件的内容后,写入一个空行(注意最后一个文件别加,避免末尾多出来没用的空行)。
下面是具体的实现思路和修改后的代码:
核心思路
直接在文件读写的循环里做手脚:遍历每个CSV文件,把内容写入到最终文件后,除了最后一个文件,额外写入两行换行符(对应空行)。因为你用的是二进制模式读写,所以要写二进制的换行符b'\n\n'。
修改后的完整代码
#!/usr/bin/env python import glob, os import shutil path = r'/Users/sonia/PaleoSkull/Animalsmanage/output' allFiles = glob.glob(path + "/*.csv") with open('finaloutput.csv', 'wb') as outfile: for i, fname in enumerate(allFiles): with open(fname, 'rb') as infile: # 把当前CSV的内容复制到最终文件 shutil.copyfileobj(infile, outfile) # 不是最后一个文件的话,写入空行分隔 if i != len(allFiles) - 1: outfile.write(b'\n\n')
额外说明
- 如果你的CSV文件本身末尾没有换行符,这个写法依然能保证两个文件之间有空行;如果已经有换行,那就是在原有换行基础上再加一个,效果还是空行分隔。
- 要是你的各个CSV文件都有表头,并且你希望最终文件只保留一份表头,那可以再加个判断:第一个文件完整写入,后续文件跳过第一行再写入,同时依然保留空行分隔的逻辑。比如把
shutil.copyfileobj(infile, outfile)替换成:if i == 0: shutil.copyfileobj(infile, outfile) else: # 跳过表头行 next(infile) shutil.copyfileobj(infile, outfile)
内容的提问来源于stack exchange,提问作者Soniasalme
相关产品推荐
相关产品推荐

