Twitter流式API Python-将不完整数据写入文件

Twitter流式API Python-将不完整数据写入文件,python,python-2.7,tweepy,twitter-streaming-api,Python,Python 2.7,Tweepy,Twitter Streaming Api,我正在使用Twitter流API获取与特定关键字匹配的推文。获得的输出被写入一个文件。我根据tweet发出的距离做了一些基本的比较,并相应地将文件分开 lat2=float(d['geo']['coordinates'][0]) long2=float(d['geo']['coordinates'][1]) lat1=venue_latitude long1=venue_longitude lon1, lat1, l

我正在使用Twitter流API获取与特定关键字匹配的推文。获得的输出被写入一个文件。我根据tweet发出的距离做了一些基本的比较,并相应地将文件分开

        lat2=float(d['geo']['coordinates'][0])
        long2=float(d['geo']['coordinates'][1])
        lat1=venue_latitude
        long1=venue_longitude
        lon1, lat1, lon2, lat2 = map(radians, [long1, lat1, long2, lat2])
        dlon = lon2 - lon1 
        dlat = lat2 - lat1 
        a = sin(dlat/2)**2 + cos(lat1) * cos(lat2) * sin(dlon/2)**2
        c = 2 * asin(sqrt(a)) 
        distance = 6367 * c * 0.621371
        if distance < 1:
            user= d['user']['screen_name']
            user_id=d['user']['id']
            file=open('Tweets_within_one_mile.txt','a')
            users.append(user)
            text=str(user)  + str(user_id)+ "qwertyasdfgzxcvb" + str(distance) + d['text'] 
            u = text.encode('utf-8')
            file.write(u)
            file.close()
        if distance > 2 and distance < 60:
            user= d['user']['screen_name']
            user_id=d['user']['id']
            file=open('Tweets_within_sixty_miles.txt','a')
            users.append(user)
            text=str(user)  + str(user_id) + str(co_lon2) +d['text']
            u = text.encode('utf-8')
            file.write(u)
            file.close()
lat2=float(d['geo']['coordinates'][0])
long2=浮动(d['geo']['coordinates'][1])
lat1=场地纬度
long1=地点经度
lon1,lat1,lon2,lat2=贴图(弧度,[long1,lat1,long2,lat2])
dlon=lon2-lon1
dlat=lat2-lat1
a=sin(dlat/2)**2+cos(lat1)*cos(lat2)*sin(dlon/2)**2
c=2*asin(sqrt(a))
距离=6367*c*0.621371
如果距离小于1:
user=d['user']['screen\u name']
用户id=d['user']['id']
file=open('Tweets\u在一英里.txt'内,'a')
附加(用户)
text=str(用户)+str(用户id)+“qwertyasdfgzcvb”+str(距离)+d['text']
u=文本编码('utf-8')
文件写入(u)
file.close()文件
如果距离>2且距离<60:
user=d['user']['screen\u name']
用户id=d['user']['id']
file=open('Tweets\u in\u sixth\u miles.txt','a')
附加(用户)
text=str(用户)+str(用户id)+str(克隆2)+d['text']
u=文本编码('utf-8')
文件写入(u)
file.close()文件
上次我运行脚本时。收集到的推特数量约为30000条。但只有20000条推文完全写入了该文件。剩下的1万份是不完整的


Python输出缓冲区有问题吗?

我不能确定这就是为什么只保存了部分缓冲区的确切原因,但是构建if语句的方式可能与此有关

例如:

if distance < 1:
    print("foo")

if distance  > 2 or distance a < 60:
    print("bar")
如果距离<1:
打印(“foo”)
如果距离>2或距离a<60:
打印(“条”)
  • 该代码适用于小于但不等于1的值
  • 1到2之间的数字不起作用(即1.1到1.9)
  • 等于2或60的数字
  • 大于60的数字
  • 同样,不确定您试图获取的确切值,但这可能会有所帮助(它将捕获所有数据):

    if距离
    
    if distance <= 1:
        print("foo")
    
    if 2 <=distance or distance <= 60:
        print("bar")