繁体   English   中英

将数据写入 csv 文件中的单列

[英]Write data into csv file in single column

我能够使用 API URL 获取数据并打印它,下面是我的代码

import re
import json
import warnings
import urllib.request
import csv

warnings.filterwarnings('ignore', message='Unverified HTTPS request')

url = "http://machineXYZ.local:4450/api/35/project/ProjectName01/executions"
headers = {
  'Accept': 'application/json',
  'X-Rundeck-Auth-Token': '#Tokens here#'
}
response = requests.request("GET", url, headers=headers, verify = False)
#print(response.text.encode('utf8'))

response_value = response.json()
response_value = json.dumps(response_value)
resp = json.loads(response_value)
with open('execute.csv','w') as executeData:
i = resp['executions']

with open('ExecOutput.csv','w') as executeData:
    for a in i:

        try:
            if (a['id']==0):
                print("Is empty")
            else:
                print("Job ID is : " + str(a['id']))
                csvWriter = csv.writer(executeData,delimiter=',')
                csvWriter.writerow(str(a['id']))
                for a in
        except KeyError:
            print("Job ID: Key error issue, Check input again")

        try:
            if(a['project']==0):
                print("Project data not available")
            else:
                print("Project Name: "+a['project'])
                csvWriter = csv.writer(executeData, delimiter=',')
                csvWriter.writerow(a['project'])
        except KeyError:
            print("Project Name: Key error issue, Check input again")

        try:
            if(a['name']==null):
                print("Job Name not available")
            else:
                print("JobName: "+a['name'])
                csvWriter = csv.writer(executeData)
                csvWriter.writerow(str(a['name']))
        except KeyError:
            print("JobName: key Error check again")
print("\n")

output 是

    {
      "id": 2,
      "href": "http://localhost:4440/api/36/execution/2",
      "permalink": "http://localhost:4440/project/ProjectEXAMPLE/execution/show/2",
      "status": "succeeded",
      "project": "ProjectEXAMPLE",
      "executionType": "scheduled",
      "user": "admin",
      "date-started": {
        "unixtime": 1608296400032,
        "date": "2020-12-18T13:00:00Z"
      },
      "date-ended": {
        "unixtime": 1608296400374,
        "date": "2020-12-18T13:00:00Z"
      },
      "job": {
        "id": "f2a837d2-1a9c-4387-89d7-0243bbfe6ba9",
        "averageDuration": 590,
        "name": "HelloWorld",
        "group": "",
        "project": "ProjectEXAMPLE",
        "description": "",
        "href": "http://localhost:4440/api/36/job/f2a837d2-1a9c-4387-89d7-0243bbfe6ba9",
        "permalink": "http://localhost:4440/project/ProjectEXAMPLE/job/show/f2a837d2-1a9c-4387-89d7-0243bbfe6ba9"
      },
      "description": "echo \"hi\"",
      "argstring": null,
      "serverUUID": "94ac86b1-56e9-4bc3-9a4c-50cd7c8a5b59",
      "successfulNodes": [
        "localhost"
      ]
    },
  ]
}

我正在捕获 output 如下

Job ID is : 691

项目名称:Project - D JobName:关键问题状态:成功用户描述:admin

作业 ID 为:690 项目名称:项目 - Y 作业名称:服务器检查状态:成功用户描述:John

Job ID 为:689 项目名称:Project -D JobName:key 再次检查错误状态:成功用户描述:admin

所以当我在 Csv 文件中写它时,我得到的 output 是输出我有

所需的 Output 格式为: 在此处输入图像描述

你能帮我在哪里做改变吗?

提前致谢

根据您的编码方法,我认为没有必要使用csv模块。 使用下面的代码段来编写每一行。 此外,您可以为所有响应元素创建一个简单的 function 以简化您的代码。

res_list = []
with open('ExecOutput.csv','w') as writer:
    for a in i:

        try:
            if (a['id']==0):
                print("Is empty")
                res_list.append('')
            else:
                print("Job ID is : " + str(a['id'])) 
                res_list.append(str(a['id']))
               
        except KeyError:
            print("Job ID: Key error issue, Check input again")

        try:
            if(a['project']==0):
                print("Project data not available")
                res_list.append('')
            else:
                print("Project Name: "+a['project'])
                res_list.append(str(a['project']))
                
        except KeyError:
            print("Project Name: Key error issue, Check input again")

        try:
            if(a['name']):
                print("Job Name not available")
                res_list.append('')
            else:
                print("JobName: "+a['name'])
                res_list.append(str(str(a['name'])))
        except KeyError:
            print("JobName: key Error check again")
        
        writer.write(','.join(res_list) + '\n')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM