Я пытаюсь создать программу для генерации текста с именами пользователей из txt-файла, но я продолжаю получать TypeError: 'int' object is not iterable
я знаю, что это значит, но я понятия не имею, как решить мою проблему. Я пытался просто сделать y = 12 / 2
, и та же ошибка возникла, когда я прошел цикл for y
, я действительно запутался, поэтому, если бы кто-то мог мне помочь, это было бы здорово.
это мой код
def generateNum():
#imports random
from random import randint
for _ in range(10):
value = randint(0, 900000)
return(str(value))
def getNumOfLines( file):
#opens txt file
with open(file) as f:
Lines = f.readlines()
count = 0
# Strips the newline character
for line in Lines:
count += 1
return(count)
class debug:
def __init__(self, credsTxt, tagsTxt):
self.credsTxt = credsTxt
self.tagsTxt = tagsTxt
self.numOfCreds = getNumOfLines(credsTxt)
self.numOfTags = getNumOfLines(tagsTxt)
self.ammountPerAccount = round(self.numOfTags / self.numOfCreds)
def getComments(self):
#initializes comment
comment = ""
#opens txt file
file1 = open(self.tagsTxt, 'r')
count = 0
while True:
count += 1
# Get next line from file
line = file1.readline()
for i in self.ammountPerAccount:
# if line is empty
# end of file is reached
if not line:
break
comment += ' ' + line.strip() + ' ' + generateNum() + '.'
return(comment)
print(debug('D:/FiverrWork/user/instagram-bot/textGen/assets/login_Info.txt', 'D:/FiverrWork/user/instagram-bot/textGen/assets/tags.txt').getComments())
это моя ошибка трассировки стека
Traceback (most recent call last):
File "d:\FiverrWork\user\textgenerator\textgenerator\txt.py", line 57, in <module>
print(debug('D:/FiverrWork/user/textgenerator/textgenerator/assets/login_Info.txt', 'D:/FiverrWork/user/textgenerator/textgenerator/assets/tags.txt').getComments())
File "d:\FiverrWork\user\textgenerator\textgenerator\txt.py", line 47, in getComments
for i in self.ammountPerAccount():
TypeError: 'int' object is not callable
Похоже, оскорбительная строка: for i in self.ammountPerAccount:
. Я вижу сверху, что вы назначаете: self.ammountPerAccount = round(...
, поэтому я считаю, что это int
. Что вы на самом деле хотите, чтобы цикл for
делал, поскольку вы не можете перебирать int
?
@Клаус Д. нет, это правильно, я просто запустил его, и он делает то же самое
@quamrana, поэтому я хочу, чтобы он запускал этот код х раз, когда х является значением ammountPerAccount.
О, так ты хотел написать: for _ in range(self.ammountPerAccount):
@quamrana я только что попробовал, спасибо, это сработало, если вы опубликуете ответ, я отдам вам должное.
Ваш цикл for
в том виде, в котором он опубликован, не может выполнять итерацию по int
. Вы хотели перебрать range()
:
for _ in range(self.ammountPerAccount):
# if line is empty
# end of file is reached
if not line:
break
comment += ' ' + line.strip() + ' ' + generateNum() + '.'
Я использовал _
в качестве переменной-заполнителя, поскольку фактическое значение i
каждый раз не использовалось.
Ваш код не соответствует трассировке. Похоже, что код исправлен, а трассировка является результатом запуска другой версии вашего скрипта.