Python' str'对象不可调用

时间:2016-04-14 21:35:53

标签: python

我的代码中有一个令人讨厌的错误,我无法自行解决。这是我的代码:

    accounts = open('usernames.txt').read().splitlines()
    my_accounts = random.choice(accounts)
    for x in my_accounts(starting_account, ending_account, 1):
        payload = { 'user_key': get_user_key(),
                    'terms': 'true',
                    'action': 'edit',
                    'page': 'simple',
                    'flow': 'TestA',
                    'dob': '1987-22-01',
                    'gender': 'f',
                    'name': str(x),
                    'password': create_password()}
        r = requests.post(CONST_URL + end_point, headers=headers, cookies=cookies, data=payload, allow_redirects=False, verify=False)

        if r.status_code == 302:
            accounts_output = 'accounts.txt'
            f = open(accounts_output, 'w')
            user_output = (str(r.status_code) + ' Account created succesfully: ' + str(x) + ' ' + create_password())
            f.write(user_output)
            f.close()
        else:
            print(str(r.status_code) + ' Unable to connect to the server :/')
            print(r.content)

当我尝试运行此操作时,出现以下错误:

Traceback (most recent call last):
  File "C:/Users/Google Drive/testing/moreTesting.py",              line 66, in <module>
ms = accountCreator().account_creator(0, 5)
  File "C:/Users/Pieperloy/Google Drive/testing/moreTesting.py",      line 43, in account_creator
    for x in my_accounts(starting_account, ending_account, 1):
TypeError: 'str' object is not callable

此外,是的,我确实尝试查找问题,但没有找到任何可以帮助我处理我的具体案例。在此先感谢,祝你有个美好的一天

2 个答案:

答案 0 :(得分:3)

my_accounts是一个字符串:

accounts = open('usernames.txt').read().splitlines()
my_accounts = random.choice(accounts)

但您正尝试将其用作函数:

my_accounts(str(starting_account), str(ending_account), 1)

如果您还有一个使用完全相同名称的函数,则必须重命名其中一个,不能对变量和函数使用相同的名称。

答案 1 :(得分:1)

accounts = open('usernames.txt').read().splitlines()
my_accounts = random.choice(accounts)
for x in my_accounts(starting_account, ending_account, 1):

splitlines()返回字符串列表。因此,您的my_accounts变量将包含accounts列表中的随机字符串。

因此,当您在for循环中调用my_accounts()时,会收到str objects are not callable的错误。

详细了解splitlines()