TypeError:缺少2个必需的位置参数:' number'和' open_number'

时间:2017-11-15 05:04:11

标签: python python-3.x tweepy

我正在编写一个小程序,从零开始发布数字,然后加1,将其写入文本文档,然后使用新的写入值再次发送。这是我目前的代码:

def tweet(number, open_number):
    print(number)
    threading.Timer(20.0, tweet).start()
    while int(number) >= 0:
        api.update_status(number)
        number = number + 1
        number_str = str(number)
        open_number.truncate()
        open_number.write(number_str)
        break
    print(number)
def main():
    open_number = open("number.txt", "r+")
    print(open_number)
    number = int(open_number.read())
    tweet(number, open_number)
main()

我接受了带有我的起始编号的number.txt文件,在我的例子中它是0.然后我创建一个数字变量来读取文本文档并将其变成一个整数,如我的main函数所示:

    def main():
    open_number = open("number.txt", "r+")
    print(open_number)
    number = int(open_number.read())
    tweet(number, open_number)
main()

从那里我调用我的推文功能,每次面包时都会有一个计时器,并在20秒后重新启动。在它发出" 0"的第一条推文之后它然后等待20秒,当它试图发出第二条推文时,我得到以下错误:

TypeError: tweet() missing 2 required positional arguments: 'number' and 'open_number'

我遇到的另一个问题是它写入新号码时它最终只是在零之后附加它。例如

首先运行:

0

第二次运行:

01

而不是仅覆盖整个.txt文件。

不确定如何解决这两个问题,任何帮助表示赞赏! :)

1 个答案:

答案 0 :(得分:0)

您没有将所需参数传递给所需的推文功能。您需要使用以下代码行启动线程。此外,您应该在执行while循环后启动线程,否则while循环中的代码将不会被执行。

threading.Timer(2, hello, (number,open_number)).start()