我正在尝试使用Facebook Graph API来获取python的内容,而且我的程序没有问题。
但是,在将数据输出到文件时,我发现了一些奇怪的东西。我改变输出结构,然后我的文件会大几倍。
原始数据如下所示:
{
"data": [
{
"id": "20531316728_10154835146021729",
"created_time": "2016-07-21T16:00:00+0000"
},
{
"id": "20531316728_10154833920726729",
"created_time": "2016-07-21T03:02:11+0000"
},
{
"id": "20531316728_10154729016861729",
"created_time": "2016-06-14T00:04:45+0000"
}
]
}
之前我用过这个:
(我将上面的数据解析为JSON格式,我称之为jsonData
)
for tuples in jsonData['data']:
print(tuples, file=open('test.txt','a'))
它将在文件中输出一些字符串,输出如下:
{'keyA': 'something1', 'keyB': 'something2'}
{'keyA': 'something3', 'keyB': 'something4'}
{'keyA': 'something5', 'keyB': 'something6'}
因为没有结构,所以我将tuples
更改为jsonData['data']
,
为了使返回成为一个数组:
for tuples in jsonData['data']:
print(jsonData['data'], file=open('test.txt','a'))
输出结果为:
[
{'keyA': 'something1', 'keyB': 'something2'},
{'keyA': 'something3', 'keyB': 'something4'},
{'keyA': 'something5', 'keyB': 'something6'} ]
但文件大小完全不同!例如,我使用tuples
获得 196KB 文件,使用jsonData['data']
我使用了python3,并且只通过更改语句进行了多次测试。 文件中的差异是否正常和正常?
答案 0 :(得分:0)
这两个for
循环之间的区别在于,在第二个循环中,每次for
循环体运行时,您都会打印出整个结构。
在第一个循环中,您只打印出当前项目(将其附加到输出文件,但您已知道该位!)。
这是一个很小的例子,可能会为你阐明它。
>>> x = [1, 2, 3, 4, 5]
>>> for i in x:
... print(i)
...
1
2
3
4
5
>>> for i in x:
... print(x)
...
[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5]