Python CSV实时逐条插入且避免表头重复的方法
本文介绍在Python中实时逐条写入CSV文件时,如何避免表头重复的问题。核心思路是在追加写入前检查文件是否已有数据,若无数据则先写入表头,再写入具体数据行。通过示例代码展示了使用csv模块进行文件读写及判断的逻辑。
实现CSV文件实时逐条插入数据,同时确保表头不重复出现。
主要策略是在首次插入数据时,先判断CSV文件是否存在数据。如果文件为空或不存在,则写入表头;如果已有数据,则直接追加内容。
在Python中,可以使用csv模块的reader和writer。写入时使用'a'(追加)模式,读取时使用'r'(只读)模式来检查文件内容。
import csv
with open("111.csv","a",encoding='utf-8',newline="") as f:
k = csv.writer(f, dialect="excel")
with open("111.csv", "r", encoding='utf-8', newline="") as f:
reader = csv.reader(f)
if not [row for row in reader]:
k.writerow(["标题", "链接", "喜欢"])
k.writerow(list)
else:
k.writerow(list)all_datas = [[1,2],[2,3],[1,2],[4,5]]
for list1 in all_datas:
with open(r"ablchange1.csv", 'a+', encoding='utf-8-sig', newline="") as f:
k = csv.writer(f, dialect="excel")
with open("ablchange1.csv", "r", encoding='utf-8-sig', newline="") as f:
reader = csv.reader(f)
if not [row for row in reader]:
k.writerow(["a","b"])
k.writerow(list1)
else:
k.writerow(list1)以下是连续写入TXT文件的示例,用于对比或基础练习。
with open("111.txt","a") as f:
for i in range(100000):
f.write(str(i)+"\n")
if i==9000:
break在写入CSV文件时,可以通过指定fieldnames来明确表头结构,确保数据格式规范。
import csv
with open('names.csv', 'w') as csvfile:
fieldnames = ['first_name', 'last_name']
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()
writer.writerow({'first_name': 'Baked', 'last_name': 'Beans'})
writer.writerow({'first_name': 'Lovely', 'last_name': 'Spam'})
writer.writerow({'first_name': 'Wonderful', 'last_name': 'Spam'})以上代码为练习示例,展示了不同场景下的CSV写入方式。
with open('specific.csv', 'a', newline="") as csvfile:
fieldnames = ['ebayno', "pov", "mpn", "ipn", "opn"]
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader() file = open("aces_less.csv","w" , newline="")
writer = csv.DictWriter(file, fieldnames=["asin","state"])
writer.writeheader()
for i in range(len(qs)):
print(qs[i])
state = getDataById(qs[i])
print("状态 = " + state + "\n")
writer.writerow({"asin":qs[i], "state": state})以上为个人经验总结,希望能为大家提供参考,也希望大家多多支持本站。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













