Python CSV编写器缺少数据行

时间:2015-08-03 14:50:35

标签: python json csv

我将json数据转储到CSV文件时遇到问题。我的CSV文件通常缺少一块json数据,但是如果我在控制台或文件中打印json,就可以看到。

基本上我正在调用一个服务两次并收回两个我解析并转储到CSV文件中的json响应。该服务只能被调用7天增量(unix时间),所以我已经实现了逻辑来在一段时间内为这个增量调用服务。

我正在使用python vanilla jsoncsv库。

首先使用标题创建CSV:

with open ('history_' + datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S")+'.csv', 'wb') as outcsv:
    writer = csv.writer(outcsv)
    writer.writerow(["Column1","Column2", "Column3", "Column4", "Column5",
              "Column6"])

然后,我有一个调用该服务两次,五十次(在打开CSV文件后)的计数器:

while y<50:
    jsoResponseOne = getJsonOne(7)
    jsonResponseTwo = getJsonTwo(7)

json响应示例:

{"Value": 
  [
    {"ExampleName": "Test", 
     "ExampleNameTwo": "Test2", 
     "ExampleDate": "1436103790", 
     "ExampleCode": 00000001, 
     "ExampleofExample": "abcd", 
     "AnotherExample": "hello"},
     {"ExampleName": "Test2", 
     "ExampleNameTwo": "Test3", 
     "ExampleDate": "1436103790", 
     "ExampleCode": 00000011, 
     "ExampleofExample": "abcd", 
     "AnotherExample": "hello2"},
  ]
}

CSV输出列如下所示:

ExampleName   ExampleNameTwo   ExampleDate   ExampleCode  ExampleofExample   AnotherExample

最后,CSV编写如下:

for item in jsonResponseOne['Value']:
                row = []
                row.append(str(item['ExampleName'].encode('utf-8')))
                if item.get("ExampleNameTwo"):
                    row.append(str(item["ExampleNameTwo"]))
                else:
                    row.append("None")
                row.append(str(item['ExampleDate']))
                row.append(str(item['ExampleCode'].encode('utf-8')))
                row.append(str(item['ExampleofExample'].encode('utf-8')))
                row.append(str(item['AnotherExample'].encode('utf-8')))
                writer.writerow(row)
for item in jsonResponseTwo['Value']:
                anotherRow= []
                anotherRow.append(str(item['ExampleName'].encode('utf-8')))
                if item.get("ExampleNameTwo"):
                    anotherRow.append(str(item["ExampleNameTwo"]))
                else:
                    anotherRow.append("None")
                anotherRow.append(str(item['ExampleDate']))
                anotherRow.append(str(item['ExampleCode'].encode('utf-8')))
                anotherRow.append(str(item['ExampleofExample'].encode('utf-8')))
                anotherRow.append(str(item['AnotherExample'].encode('utf-8')))
                writer.writerow(anotherRow)

为什么我的CSV输出会丢失整行数据(来自JSON响应的数据块)?

1 个答案:

答案 0 :(得分:1)

解决。

Python脚本在其中一个while循环中出现缩进问题,导致某些数据被跳过而不会写入CSV文件。