CSV WriteRow数据

时间:2016-02-29 21:55:17

标签: python csv

我试图将2个变量写入我的csv中的行。 setTimeout(function () { window.print(); }, 500); window.onfocus = function () { setTimeout(function () { window.close(); }, 500); } 变量(有2列/值)和'项result writerow`函数参数?如果是这样,语法将如何?我的下面的语法与两个变量之间的逗号不起作用。

我正在谈论:

variable (which has just 1 value). Can I include both of these values in the

所有代码:

writer.writerow([item,result.items()[0][0],result.items()[0][1]])

解答:

#!/usr/bin/env python

import splunklib.client as client 
import splunklib.results as results
import csv

listOfAppIDs = []
with open('filefolder/filelocation.txt', 'r') as fi:
    for line in fi:
        listOfAppIDs.append(line.rstrip('\n'))
listOfAppIDs.sort() #alphebetically sort list

HOST = "ipAddress"
PORT = 1234
USERNAME = "uName"
PASSWORD = "pWord"

startPoint = "firstAppInList" 

outputCsv = open('filefolder/filelocation.csv', 'wb')
fieldnames = ['appID', 'TotalDestinationIPAddresses', 'AverageThroughputPerMonth']
writer = csv.DictWriter(outputCsv, fieldnames=fieldnames)
writer.writeheader(); 

def connect():
    global startPoint , item

    service = client.connect(
        host=HOST,
        port=PORT,
        username=USERNAME,
        password=PASSWORD,
        autologin=True
    )   

    jobs = service.jobs
    kwargs_blockingsearch = {"exec_mode": "blocking"}

    try:
        for item in listOfAppIDs:
            if (item >= startPoint):
                searchquery_blocking = "splunkQuery"
                print item + ':'
                job = jobs.create(searchquery_blocking, **kwargs_blockingsearch) 
            for result in results.ResultsReader(job.results()):             
                writer.writerow([item,result.items()[0][0],result.items()[0][1]])#writes data underneath the column header
    except csv.Error:
        startPoint = item
        connect()

connect()
outputCsv.close()

2 个答案:

答案 0 :(得分:4)

通过传递一个数组,将多个字段传递给writerow。假设result是两个元素的数组,你可以这样做

writer.writerow([item,result[0],[result[1]])

或根据您的评论resultOrderedDict,您可以这样做:

writer.writerow([item,result.items()[0][0],result.items()[0][1]])

答案 1 :(得分:2)

您收到了什么错误消息?

使用csv.DictWriter时,字典应传递给writerow(),而不是列表。根据我看到的内容,您可以使用普通csv.writer对象,只需使用标题行调用writerow(),而不是为每次调用writerow()创建字典。

因此,如果你像这样初始化它,我认为它会起作用:

writer = csv.writer(outputCsv)
writer.writerow(fieldnames);