【发布时间】:2014-06-18 23:55:50
【问题描述】:
所以我正在使用 twython(EDIT: python Twitter 客户端库)编写一个简单的 python 流侦听器,当运行 .py 时,输出文件大小在 1 到 5kb 之间波动。我想知道如何确保文件不断被写入。下面是代码。
class MyStreamer(TwythonStreamer):
def on_success(self, data):
with open(filename,'w')as outfile:
json.dump(data,outfile,indent=4)
outfile.flush()
outfile.close()
def on_error(self, status_code, data):
print(status_code)
stream = MyStreamer(APP_KEY, APP_SECRET,
OAUTH_TOKEN, OAUTH_TOKEN_SECRET)
stream.statuses.filter(track=input_string)
【问题讨论】:
-
为什么每次写入的数据都要以相同的大小开头?您怎么知道您每次都读取相同的数据?您是否尝试在
on_success函数中添加print(data)或其他调试语句来检查此假设? -
您是在问如何附加到文件而不是覆盖它?打开文件时使用模式
a而不是w。但是文件中的 JSON 字符串序列不是有效的 JSON 文件,所以这可能不是一个好主意。 -
@Dan ,在流式传输时,输出文件大小会在几秒钟内发生变化(即 1、2、3、1、2、1 kb 等)。没有严格增加尺寸。
-
@Diabellical,为什么这种行为出乎意料?如果您从 Twitter 流式传输大量数据,那么您获得的数据量将发生不可预测的变化。输出文件的大小正在发生变化,因为您每次都完全覆盖它。
标签: python json twitter streaming twython