我试图将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()
答案 0 :(得分:4)
通过传递一个数组,将多个字段传递给writerow
。假设result
是两个元素的数组,你可以这样做
writer.writerow([item,result[0],[result[1]])
或根据您的评论result
是OrderedDict
,您可以这样做:
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);