

下記のツイートを保存したいのですが上手くいきません。実行中でpython intento.py >> result.dat  
を書きました。

[code]

    #-*- coding: utf-8 -*-
    from tweepy.streaming import StreamListener
    from tweepy import OAuthHandler
    from tweepy import Stream
    import json
    
    # Variables that contains the user credentials to access Twitter API
    access_token = 'access_token_example'
    access_token_secret = 'access_token_secret'
    consumer_key = 'comsumer_srcret_example'
    consumer_secret = 'consumer_secret_example'
    
    
    # This is a basic listener that just prints received tweets to stdout.
    class StdOutListener(StreamListener):
        def on_data(self, data):
            json_load = json.loads(data)
            texts = json_load['text']
            coded = texts.encode('utf-8')
            s = str(coded)
            print(s[2:-1])
            return True
    
        def on_error(self, status):
            print(status)
    
    auth = OAuthHandler(consumer_key, consumer_secret)
    auth.set_access_token(access_token, access_token_secret)
    stream = Stream(auth, StdOutListener())
    
    # This line filter Twitter Streams to capture data by the keywords:                 'python', 'javascript', 'ruby'
    OKINAWA = [127.672482, 26.088887, 128.275025, 26.851451]
    stream.filter(track=[u'臺灣', ],languages=['ja'], locations=OKINAWA)    
    
[/code]

実行  
[root@localhost デスクトップ]#python intento.py  
0o8m3o1e  
ありがとー��  
2tNC9CYlGoicJz ひんすーだから少金額からやるのさ残りの口座がくみてみ積み上げていけば良いのさ���  
�い…��ANS_AMRAI @hanaFFRK 犯すのはまえはなだけにしてください  
�じ前の車のクラウン運転してる人頭悪��  
python intento.py >> result.dat

デスクトップにあるファイル（result.dat）を開くと、何も表示されません。  
もしやり方がわかる方いれば、教えていただけるとありがたいです。  
よろしくお願いいたします。


CC BY-SA 3.0
2016-10-05T01:28:04.260
29359
2016-11-20T06:37:44.213
2016-10-05T03:39:37.803
5246
18859
question
python twitter
pythonからツイートの保存について


on_dataを下記のように変更して、`python intento.py >> result.txt`と実行してみてください

[code]

    
        def on_data(self, data):
            print(data[2:-1])
            return True
    
    
[/code]


CC BY-SA 3.0
2016-10-05T03:57:50.827
29364
2016-10-05T03:57:50.827
5246
29359
answer


実行したプログラムを`CTRL+C`で止めると出力されるのではないでしょうか？  
この場合、print()の出力がバッファリングされているのが原因です。

以下、現象を再現できる最小のサンプルです。

test_print.py

[code]

    import time
    
    while True:
        print("a")
        time.sleep(1)
    
[/code]

`python test_print.py >> result.dat` で実行して、別のコンソールから`tailf
result.dat`で出力を見ても実行中は何も出力されませんが、CTRL+Cで止めると出力されます。

## 解決方法

`print("a", flush=True)`とすればprintを呼び出したタイミングで即座に出力されるようになります。


CC BY-SA 3.0
2016-10-05T04:07:49.607
29365
2016-10-05T04:07:49.607
18862
29359
answer