Python csv 导出不适用于 header 匹配行的统一模式

Python csv export doesn't work in uniform pattern with header matching rows

我是 Python 的新手,我正在尝试使用 headers 将我的输出导出到 CSV:工件,大小。下面是它的 python 代码。

import requests
import json
import csv

with open('content.csv', 'w') as csvfile:
    headers = ['Artifacts', 'Size']
    writer = csv.writer(csvfile)
    writer.writerow(headers)
with open('file_list.txt') as file:
    for line in file:
       url = "http://fqdn/repository/{0}/{1}?describe=json".format(repo_name, line.strip())
       response = requests.get(url)
       json_data = response.text
       data = json.loads(json_data)
       for size in data['items']:
          if size['name'] == 'Payload':
            value_size= size['value']['Size']
            if value_size != -1:
              with open('content.csv', 'a') as fileappend:
                  data_writer = csv.writer(fileappend)
                  data_writer.writerow({line.strip(), str(value_size)})

我遇到的问题是,我没有看到预期的 csv 文件,其中 Artifacts 列带有工件名称,Size 列带有它们的大小,相反,我看到的是混合模式,其中一些行是正确的,一些行是正确的的行首先显示大小,然后显示工件。

另一个问题(不是那么重要)是在 Excel.

中打开时每行之间添加的空行间隙

CSV 数据示例

Artifacts,Size
3369,mysql.odbc/5.1.14
641361,curl/7.24.0
2142246,curl/7.24.0.20120225
2163958,curl/7.25.0
curl/7.55.0,3990517
curl/7.55.1,3991943
3875614,curl/7.54.1
curl/7.58.0,3690457
putty.portable/0.67,4201
6227,notepadplusplus/7.5.4
4407,openjdk8/8.242.8.1
5453,dotnetcore-sdk/3.1.201
4405,openjdk8/8.252.9

非常感谢任何帮助。

您正在将 set 作为参数发送给 write_row()set 对象是 hash-based,因此不一定保持顺序。 您应该改用 listtuple

在你的最后一行:

# replace curly brackets with square brackets
data_writer.writerow([line.strip(), str(value_size)])