2015-11-28 14 views
0

В настоящее время я разрабатываю скрипт Python, который использует API Streaming Stream.Пропустить ключевое слово Python в качестве аргумента?

Проблема заключается в том, что когда я вызываю stream.user(), он запрашивает аргумент как stream.user(with=followings), но Python обнаруживает «с» в качестве ключевого слова и дает мне синтаксическую ошибку. Есть ли способ обойти это?

Update:

Вот Twitter документ: https://dev.twitter.com/streaming/userstreams#Data_from_accounts_the_user_follows, он говорит, что мне нужно использовать «с = Подписки», если я хочу получить твита со счетов пользователя следующим образом.

Update 2:

Вот код:

from twython import Twython, TwythonStreamer 

class Streamer(TwythonStreamer): 

    def on_success(self, data): 

     if 'text' in data: 
      user = '@' + data['user']['screen_name'] 
      tweet = ': ' + data['text'] 

    def on_error(self, status_code, data): 
     print status_code 
     self.disconnect() 

stream = Streamer('XXX', 
       'XXX', 
       'XXX', 
       'XXX') 

stream.user(with=followings) 
+0

Что? Библиотека Python не может просить об этом, так как это синтаксическая ошибка. –

+0

API потоковой передачи Twitter - это HTTP API. Вы должны использовать некоторую библиотеку Python. Что это? – BrenBarn

+0

Я использую Twython. –

ответ

0

Edit: Глядя на https://github.com/ryanmcgrath/twython/blob/00d9d6a7666267bc305a2ceccb642ef79a1555c7/twython/streaming/types.py

ссылки на: https://dev.twitter.com/streaming/reference/get/user

def user(self, **params): 

Notic е двойная звезда **

If the form *identifier is present, it is initialized to a tuple receiving any excess positional parameters, defaulting to the empty tuple. If the form **identifier is present, it is initialized to a new dictionary receiving any excess keyword arguments, defaulting to a new empty dictionary.

Попробуйте это:

params = {'with' : 'followings'} 

stream.user(**params) 

«с» действительно ключевое слово в питона

>>> import keyword 
>>> keyword.iskeyword('with') 
True 
+0

Nope, дает мне эту ошибку: 'TypeError: user() принимает ровно 1 аргумент (2 заданный)' –

+0

, тогда вы не можете использовать какой-либо аргумент в 'user()' – furas

+0

@ Проблема Александра была ключевым словом 'with' but' user() принимает ровно 1 аргумент ', поэтому это невозможно сделать таким образом. ('stream.' является первым и единственным аргументом для' user() ') – furas

0

Это не указано в вашем вопросе, но я предположил, вы хотели слушать все твиты от конкретного пользователя. в этом случае вы можете работать с tweepy потоковом следующим образом:

l = StreamListener() 
streamer = tweepy.Stream(auth=auth, listener=l) 
streamer.userstream(_with='followings') 

вы можете прочитать больше в here

Смежные вопросы