本地文件夹间CSV读写及添加注释另存为TAB文件问题
解决方案:读取CSV添加注释后保存为新的.tab文件
首先,你的原代码有几个需要修正的小问题:比如误将变量CSV_IN当成字符串传入open(),而且用r+模式会直接修改原输入文件,这显然不是你想要的。下面我会给出两种可行的实现方式,你可以根据自己的习惯选择。
方法一:使用csv模块(贴近你的原始代码逻辑)
这种方式直接操作文件内容,适合需要严格保留原始文件格式细节的场景:
import csv import os.path # 定义输入输出的路径与文件名 folder_input = '/my_folder/input/' input_filename = "my_df.csv" CSV_IN = os.path.join(folder_input, input_filename) folder_out = '/my_folder/output/' output_filename = "my_commented_df.tab" # 用.tab作为扩展名 CSV_OUT = os.path.join(folder_out, output_filename) # 先读取输入文件的全部内容 with open(CSV_IN, 'r') as f_in: # 这里我们用csv reader来处理逗号分隔的内容,转成制表符格式 csv_reader = csv.reader(f_in, delimiter=',') rows = list(csv_reader) # 写入带注释的新.tab文件 with open(CSV_OUT, 'w', newline='') as f_out: # 先写入注释行,记得加换行符避免和表头粘连 f_out.write('my personal comment\n') # 用制表符作为分隔符写入内容 csv_writer = csv.writer(f_out, delimiter='\t') csv_writer.writerows(rows)
方法二:使用pandas(更简洁的数据分析场景方案)
如果你已经在使用pandas处理数据,这种方式会更高效,还能省去手动处理分隔符的麻烦:
import pandas as pd import os.path # 定义输入输出的路径与文件名 folder_input = '/my_folder/input/' input_filename = "my_df.csv" CSV_IN = os.path.join(folder_input, input_filename) folder_out = '/my_folder/output/' output_filename = "my_commented_df.tab" CSV_OUT = os.path.join(folder_out, output_filename) # 读取输入CSV文件 df = pd.read_csv(CSV_IN) # 先写入注释,再追加保存DataFrame为制表符分隔的.tab文件 with open(CSV_OUT, 'w') as f_out: f_out.write('my personal comment\n') # 用mode='a'追加数据,sep='\t'设置制表符分隔,index=False不保存索引列 df.to_csv(CSV_OUT, sep='\t', mode='a', index=False)
关键细节说明:
- 避免覆盖原文件:全程对输入文件用
r只读模式,输出文件用w/a模式新建或追加,完全分离输入输出,不会改动原文件。 - 保存为.tab格式:通过设置
delimiter='\t'(csv模块)或sep='\t'(pandas)实现制表符分隔,同时文件名使用.tab扩展名,符合你的需求。 - 注释处理:写入数据前先单独写入注释行,加上换行符
\n确保注释和数据内容清晰分离。
内容的提问来源于stack exchange,提问作者Elly
相关产品推荐
相关产品推荐

