1
私はTwitter Streaming APIへのオープンな接続を維持するpythonスクリプトを持っており、そのデータをjsonファイルに書き込みます。書き込み中のファイルが一定のサイズに達した後、接続を中断することなく新しいファイルに書き込むことは可能ですか?たとえば、データを1週間以上ストリーミングしただけですが、すべてのデータが1つのファイル(〜2GB)に含まれているため、解析が遅くなります。例えば500MBと言うと新しいファイルに書き込めるのであれば、1つの大きなファイルの代わりに4つの小さいファイル(例えばdump1.json、dump2.jsonなど)を解析することになります。Python APIストリーミング、特定のサイズの後に新しいファイルを書き込む
import tweepy
from tweepy import OAuthHandler
from tweepy import Stream
from tweepy.streaming import StreamListener
# Add consumer/access tokens for Twitter API
consumer_key = '-----'
consumer_secret = '-----'
access_token = '-----'
access_secret = '-----'
auth = OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_secret)
api = tweepy.API(auth)
# Define streamlistener class to open a connection to Twitter and begin consuming data
class MyListener(StreamListener):
def on_data(self, data):
try:
with open('G:\xxxx\Raw_tweets.json', 'a') as f:
f.write(data)
return True
except BaseException as e:
print("Error on_data: %s" % str(e))
return True
def on_error(self, status):
print(status)
return True
bounding_box = [-77.2157,38.2036,-76.5215,39.3365]#filtering by location
keyword_list = ['']#filtering by keyword
twitter_stream = Stream(auth, MyListener())
twitter_stream.filter(locations=bounding_box) # Filter Tweets in stream by location bounding box
#twitter_stream.filter(track=keyword_list) # Filter Tweets in stream by keyword
ファイルサイズをどのように設定するのですか?os.stat(tweet_file).st_size> 2 ** 10'ですか? –
@AndrewR。これはファイルサイズを確認する方法です。例外を避けるためにまず存在をチェックします - あなたは_try ... except_を使うかもしれません。このコードを_getter_メソッドにパッケージ化することができます。 – volcano