1

我想将不同变量的值保存在 CSV 文件中。但它每次都会打印另一个标题。我不想要这个,我附上我的 CSV 文件快照以供您理解。输出 csv

file_orimg = open('Org_image.csv', 'a', newline='')
writer_orimg = csv.writer(file_orimg, delimiter='\t',lineterminator='\n',)
writer_orimg.writerow(["Image Name", "epsilon","MSE", "SSIM", "Prediction", "Probability"])

for i in images:
     writer_orimg.writerow([i, epsilon, mse, ssim, clean_pred, clean_prob, label_idx.item()])
4

1 回答 1

3

尽量不要使用writerow来编写标题。可以看一下CSV python模块中的DictWriter,写表头和写行会更有效率!

list_of_headers = ['No.', 'Image Name', 'Epsilon']
dictionary_content = {'No.': 1, 'Image Name': 'image_123', 'Epsilon': 'what?'}
w = csv.DictWriter(my_csvfile, fieldnames= list_of_headers)
w.writeheader()
w.writerow(dictionay_content)

希望对您有所帮助,如果有任何纠正措施,请告诉我!

编辑:回答“应该在何时何地完成 writeheader”

我使用os python 模块来确定文件是否存在,如果不存在,我将创建一个!

if os.path.isfile(filename):
    with open(filename, 'a', newline='') as my_file:
        w = csv.DictWriter(my_file, fieldnames= list_of_headers)
        w.writerow(dictionay_content)
else:
    with open(filename, 'w', newline='') as my_file:
        w = csv.DictWriter(my_file, fieldnames= list_of_headers)
        w.writeheader()
        w.writerow(dictionay_content)

!!!注意'a'是追加,而'w'表示写入。因此,从停止/上次占用的位置附加新的数据行。

于 2020-05-10T07:46:55.770 回答