0

使用 twitter-1.9.0 ( http://pypi.python.org/pypi/twitter/1.9.0 ) 我正在尝试发送状态消息但无法发送。下面是代码片段。

import twitter as t

# consumer and authentication key values are provided here.

def tweet(status):
    if len(status) > 140 :
        raise Exception ('Status message too long !!!')
    authkey = t.Twitter(auth=t.OAuth(ACCESS_TOKEN_KEY, ACCESS_TOKEN_SECRET, CONSUMER_KEY, CONSUMER_SECRET))
    authkey.statuses.update(status)

....

price = 99.99
status = "buy price is $" + str(price)
tweet(status)

错误如下:

Traceback (most recent call last):
  File "/home/tanmaya/Documents/prog/py_prog/progs/getprice.py", line 42, in <module>
    tweet(status)
  File "/home/tanmaya/Documents/prog/py_prog/progs/getprice.py", line 17, in tweet
    authkey.statuses.update(status)
TypeError: __call__() takes 1 positional argument but 2 were given

行号可能不同。我对这些 web 模块和 python 程序有点陌生。请帮忙 !!

请注意:我使用的是 python 3.3,所以我只从 python3.3 包页面获得了这个(twitter-1.9.0)。我的完整程序有点长,所以我不想移动到其他版本的 python。

4

1 回答 1

1

根据您发布的包的示例用法,您应该在您的def tweet(status):

authkey.statuses.update(status=status)

注意使用status=status... 来使用关键字参数,而不是位置参数

为了澄清,您的代码变为

def tweet(status):
    if len(status) > 140 :
        raise Exception ('Status message too long !!!')
    authkey = t.Twitter(auth=t.OAuth(ACCESS_TOKEN_KEY, ACCESS_TOKEN_SECRET, CONSUMER_KEY, CONSUMER_SECRET))
    authkey.statuses.update(status=status) # <----- only this line changes

....

price = 99.99
status = "buy price is $" + str(price)
tweet(status)
于 2012-12-12T19:50:51.027 回答