質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

Q&A

0回答

1056閲覧

PythonでTwitterの該当ツイートを取得しているが、終了条件が分からない

hir0ki112

総合スコア6

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

0グッド

0クリップ

投稿2017/09/04 03:55

###PythonでTwitterのテキストを取得する
Python初心者です。
Pythonで該当単語のツイートを取得しています。常駐のプログラム動かしています。
該当単語が存在する限りTwitterのツイートを取得するものとして考えているのですが、

Python

1finish with exit code 0

で、終了してしまうことがあります。
エラーではないということは、自分が理解していない終了条件が存在していると考えているのですがまったく思い当る節がありません。
以下にソースコードを載せておきます。どこが該当の箇所かお分かりになる方は教えていただければ幸いです。よろしくお願いします。

###該当のソースコード

Python

1# -*- coding: utf-8 -*- 2import datetime 3import io 4import pytz 5import twitter 6import sys 7import dateutil.parser 8import pandas as pd 9from peewee import * 10 11 12db = SqliteDatabase('twitter_stream.sqlite') 13 14 15class Twitte(Model): 16 createAt = DateTimeField(index=True) 17 idStr = CharField(index=True) 18 contents = CharField() 19 20 class Meta: 21 database = db 22 23 24def GetStreamFilter(api, 25 follow=None, 26 track=None, 27 locations=None, 28 delimited=None, 29 stall_warnings=None): 30 31 if all((follow is None, track is None, locations is None)): 32 raise ValueError({'message': "No filter parameters specified."}) 33 url = '%s/statuses/filter.json' % api.stream_url 34 data = {} 35 if follow is not None: 36 data['follow'] = ','.join(follow) 37 if track is not None: 38 data['track'] = ','.join(track) 39 if locations is not None: 40 data['locations'] = ','.join(locations) 41 if delimited is not None: 42 data['delimited'] = str(delimited) 43 if stall_warnings is not None: 44 data['stall_warnings'] = str(stall_warnings) 45 46 json = api._RequestStream(url, 'POST', data=data) 47 for line in json.iter_lines(): 48 if line: 49 data = api._ParseAndCheckTwitter(line) 50 yield data 51 52def str_to_date_jp(str_date): 53 dts = datetime.datetime.strptime(str_date,'%a %b %d %H:%M:%S +0000 %Y') 54 return pytz.utc.localize(dts).astimezone(pytz.timezone('Asia/Tokyo')) 55 56def main(argvs, argc): 57 if argc != 6: 58 print ("Usage #python %s consumer_key consumer_secret access_token_key, access_token_secret, ああああ" % argvs[0]) 59 return 1 60 consumer_key = argvs[1] 61 consumer_secret = argvs[2] 62 access_token_key = argvs[3] 63 access_token_secret = argvs[4] 64 65 track = argvs[5].split(',') 66 67 db.create_tables([Twitte], True) 68 69 api = twitter.Api(base_url="https://api.twitter.com/1.1", 70 consumer_key='非公開', 71 consumer_secret='非公開', 72 access_token_key='非公開', 73 access_token_secret='非公開') 74 for item in GetStreamFilter(api, track=track): 75 print('---------------------') 76 if 'text' in item: 77 print(item['id_str']) 78 print(str_to_date_jp(item['created_at'])) 79 print(item['text']) 80 print(item['place']) 81 row = Twitte(createAt=str_to_date_jp(item['created_at']), 82 idStr=item['id_str'], 83 contents=item['text']) 84 row.save() 85 row = None 86 87if __name__ == '__main__': 88 sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf-8',errors='backslashplace') 89 argvs = sys.argv 90 argc = len(argvs) 91 sys.exit(main(argvs, argc)) 92

###質問
sys.exitがいつ呼ばれるかに関係していると思うのですが、分からないです。
よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問