如何使用bash将程序输出写入CSV文件且避免覆盖原有内容
解决方案
问题原因
- 你的脚本仅在初始化阶段写入了CSV表头,循环内的Python程序运行结果没有定向到CSV文件,因此不会出现在目标文件中
- 写入已存在的文件时如果用
>会覆盖原有内容,追加内容需要使用>>运算符 - Python输出的是空格分隔的内容,需要转换为CSV要求的逗号分隔格式
修改后的完整脚本
outfile="gremlin_pop"$low_pop"-"$hi_pop".csv" echo "Initial Population,Good Gremlins,Bad Gremlins" > $outfile for p in `seq $low_pop $step_pop $hi_pop`; do echo "Experiment: " $p # 处理Python输出转为逗号分隔后追加到CSV python3 gremlinSim.py $p | awk '{print $1","$2","$3}' >> $outfile done
说明
- 新增的
awk命令会提取Python输出的三列内容,用逗号拼接后输出,适配CSV格式,即便输出列之间有多个空格也能正常处理 >>是追加运算符,会把处理后的内容新增到文件末尾,不会覆盖之前写入的表头和历史循环的输出echo "Experiment: " $p会正常输出到终端方便查看运行进度,不会写入CSV文件,符合你的需求
内容的提问来源于stack exchange,提问作者Jonathan
相关产品推荐
相关产品推荐

