如何用Robot Framework为CSV文件指定列追加数据?
解决方案
方法一:使用awk命令
假设CSV文件名为data.csv,将indexcol3替换为实际的列索引(从0开始计数),执行以下命令:
awk -v col=你的索引值 'BEGIN{FS=OFS=";"} NR==1{print; next} getline val < "file.txt" { $col=val; print }' data.csv > new_data.csv
比如如果col3的索引是2,命令就是:
awk -v col=2 'BEGIN{FS=OFS=";"} NR==1{print; next} getline val < "file.txt" { $col=val; print }' data.csv > new_data.csv
说明:
FS=OFS=";":设置输入和输出的分隔符均为分号NR==1{print; next}:表头行直接输出,跳过后续处理getline val < "file.txt":从file.txt中读取一行值存入变量val$col=val; print:将指定列的内容替换为val,然后输出整行- 最终结果写入
new_data.csv,避免覆盖原文件
方法二:使用Python脚本
如果需要处理更复杂的CSV场景,用Python的csv模块更稳妥:
创建fill_col3.py脚本:
import csv # 替换为col3的实际索引(从0开始) target_col = 2 # 读取file.txt中的值,去除每行首尾空白 with open('file.txt', 'r', encoding='utf-8') as f: fill_values = [line.strip() for line in f] # 处理CSV文件 with open('data.csv', 'r', encoding='utf-8') as in_csv, \ open('filled_data.csv', 'w', encoding='utf-8', newline='') as out_csv: csv_reader = csv.reader(in_csv, delimiter=';') csv_writer = csv.writer(out_csv, delimiter=';') # 写入表头 csv_writer.writerow(next(csv_reader)) # 逐行填充目标列 for row, value in zip(csv_reader, fill_values): row[target_col] = value csv_writer.writerow(row)
运行脚本:
python fill_col3.py
执行后,filled_data.csv就是填充完成的文件。
内容的提问来源于stack exchange,提问作者fadwa z
相关产品推荐
相关产品推荐

