我正在使用Splunk,但这似乎是一个与python相关的问题。
通过一个API调用,我接收到一个字典列表,并遍历各个字典以打印出一个特定的字段。看起来是这样的:
with open(lobFileName, "w+") as LOBs: #read/write, truncates file!
for item in reader:
for key in item: # iterate through the dictionary
if key == 'cost_center':
print item[key] # TODO: Replace this with however I display it on the webpage.
LOBs.write(item[key]) # write the LOBs to the file, one LOB per line
LOBs.write("\n")
读者是列表,条目是单个字典。
打印呼叫工作正常。它按我的意愿,按我的意愿,按我的意愿,打印出公司的业务线。所以我不会透露个人信息(真正的单词是英语,长度相似,如果这很重要的话。。。一个单词没有空格),输出如下:
阿尔法
布拉沃河
查理
但是,当我写相同的东西(项[键])时,我会得到一个:
"expected a character buffer object"
错误。所以,我把它改成
LOBs.write(str(item[key])
。但是当我写这个文件时,我得到的不是上面的输出,而是(A,B,C粗体以便于查看):Alpha~1116~7F4F9983-72F8-48C8-BFAD-82C0F713CA34 1116:18886924 1437701601 07-24-2015 16:35:59.888-0400信息度量-
group=per U index U thruput,series=“clo”,kbps=3.596555,每股收益=13.129038,
kb=111.493164,ev=407,平均年龄=2.422604,最大年龄=27 199['ksplidx4c',
“内部”]展开。888 2015-07-24T16:35:59.888-04:00
布拉沃河
PSPLFW1A型
_内部1 clo/opt/splunk/var/log/splunk/metrics.log splunk ksplidx4c
_内部~1116~7F4F9983-72F8-48C8-BFAD-82C0F713CA34 1116:18886931 1437701601 07-24-2015 16:35:59.888-0400信息度量-
group=per U index U thruput,series=“cos”,kbps=564.982992,
eps=1387.129659,kb=17514.464844,ev=43001,平均年龄=2.232622,
最大年龄=11 198['ksplidx4c',''u internal']splunk.888
2015-07-24T16:35:59.888-04:00
查理
PSPLFW1A型
_内部1 cos/opt/splunk/var/log/splunk/metrics.log splunk ksplidx4c
_内部~1116~7F4F9983-72F8-48C8-BFAD-82C0F713CA34 1116:18886952 1437701601 07-24-2015 16:35:59.888-0400信息度量-
组=每个索引,系列=“issofim”,kbps=1.250410,
eps=12.193554,kb=38.762695,ev=378,平均年龄=1.738095,最大年龄=8195
['ksplidx4c',''u internal']展开。888 2015-07-24T16:35:59.888-04:00
现在,我知道那看起来很大,你不知道那意味着什么,听我说:)。显然,write()的工作方式与print()的工作方式不同。既然已经解释了,我的问题是:
有人知道我如何模仿print()的工作方式
write()起作用,这样我就可以在每一行得到干净的A、B、C输出了?
非常感谢。如果可能的话,我认为这是解决问题的最好办法。
最佳答案
你能用这段代码再试一次并提供输出吗?
with open(lobFileName, "w+") as LOBs: #read/write, truncates file!
for item in reader:
for key in item: # iterate through the dictionary
if key == 'cost_center':
print "%s\n" % (item[key]) # TODO: Replace this with however I display it on the webpage.
LOBs.write("%s\n" % (item[key])) # write the LOBs to the file, one LOB per line
现在你应该可以在打印文件中看到相同的内容