2016-04-14 110 views
0

我的代碼中有一個令人討厭的錯誤,我無法自己弄清楚。這裏是我的代碼:Python'str'對象不可調用

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 

而且,是的,我曾嘗試查找問題,但沒有發現任何東西,可以幫助我與我的具體情況。在此先感謝,祝你有個美好的一天

+0

嗯......你確定'str'沒有被定義爲某個變量嗎?否則,您的代碼應該工作 – Zizouz212

+0

您的錯誤消息和這裏發佈的代碼都參考不同的代碼!你的錯誤信息包含'str(ending_account)'和'str(starting_account)',你在這裏寫的代碼不會。請發佈正確的代碼片段。 –

+0

@soon:my_accounts呢? –

回答

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()

3

my_accounts是一個字符串:

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

,但你要使用它作爲一個功能:

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

如果你也有使用完全相同的名稱的功能,你就會有要重命名一個或另一個,不能爲變量和函數使用相同的名稱。

+0

哦。好的趕上! :D – Zizouz212

+0

嗯,這很有道理,那麼我將如何去獲取for循環中的my_account變量? 'usernames.txt'包含多行字符串我想從該文本文件中獲取一定數量的行,然後提交。 starting_account&ending_account只是整數,所以我可以說'嘿,讓我0到5個帳戶',如果這是有道理的? – Naomi

+0

你不需要隨機選擇賬戶。您可以將for循環更改爲'for account in [starting_account:ending_account - starting_account]:'。這被稱爲列表切片。看看它。 – ronakg