Я использую gensim для создания модели word2vec файла образца, который у меня есть в каталоге. Я последовал за учебником онлайн, который читает файлы в каталоге и обрабатывает его по строкам. Мой образец файла имеет 9 строк. Но этот код дает мои те же строки 9 раз. Может кто-нибудь объяснить, что происходит.Имитатор файлов Python, выполняющийся несколько раз
class MySentences(object):
def __init__(self, dirname):
self.dirname = dirname
def __iter__(self):
for fname in os.listdir(self.dirname):
for line in open(os.path.join(self.dirname, fname)):
print os.path.join(self.dirname, fname)
yield line.split()
sentences = MySentences('/fakepath/Folder')
Детали: Пусть имя файла содержит 3 строки, как
hi how are you.
I am fine.
I am good.
line.split()
должны дать мне: ['hi','how','are','you']
только один раз. Но это происходит 3 раза, поэтому я получаю список выше трижды, а не один раз. Если общее число предложений равно 5, оно возвращает строку 5 раз.
Что такое '' line' в line.split() '? Как он инициализируется? – DyZ
Для каждой строки в файле. он объявлен в цикле for –
Итак, '' fakepath/filename.txt'' является 'dirname'? Это похоже на имя файла, а не на имя каталога. – DyZ