在Python中,可以使用以下步骤来覆盖CSV文件中具有相同主键的行:
import csv
import tempfile
import shutil
def overwrite_csv_row(csv_file, primary_key, new_row):
temp_file = tempfile.NamedTemporaryFile(mode='w', delete=False)
with open(csv_file, 'r') as file, temp_file:
reader = csv.DictReader(file)
fieldnames = reader.fieldnames
writer = csv.DictWriter(temp_file, fieldnames=fieldnames)
writer.writeheader()
for row in reader:
if row['primary_key'] == primary_key:
writer.writerow(new_row)
else:
writer.writerow(row)
shutil.move(temp_file.name, csv_file)
csv_file = 'path/to/your/csv/file.csv'
primary_key = 'your_primary_key'
new_row = {'primary_key': primary_key, 'column1': 'value1', 'column2': 'value2', ...}
overwrite_csv_row(csv_file, primary_key, new_row)
在上述代码中,csv_file
是CSV文件的路径,primary_key
是要覆盖的行的主键值,new_row
是包含新数据的字典,其中键是CSV文件的列名,值是要覆盖的新值。
这个函数将创建一个临时文件来存储更新后的CSV数据,并在更新完成后将临时文件移动到原始CSV文件的位置,从而实现覆盖行的效果。
请注意,这只是一个简单的示例,假设CSV文件的第一行是列名。如果你的CSV文件结构不同,请相应地调整代码。
领取专属 10元无门槛券
手把手带您无忧上云