2015-04-26 4 views
-1

У меня есть несколько файлов в каталоге, который я пытаюсь прочитать, и сохранить содержимое каждого файла в том же массиве.Итеративно заполнять массив в Python

getFileNames возвращает все имена файлов из базового каталога, и они возвращаются и сохраняются правильно в массив allFiles.

Я пробовал приведенный ниже код, но он возвращает только данные из первого файла. Фактически, файл массива имеет только один элемент, allFiles[0].

basePath = '/home/resume_examples/' 
allFiles = getFileNames(basePath) 
for document in allFiles: 
    fileTexts = [getFileText(basePath + document)] 
print fileTexts 

Я также пробовал, но есть еще один элемент в массиве (содержимое последнего чтения файла).

basePath = '/home/resume_examples/' 
allFiles = getFileNames(basePath) 
for document in allFiles: 
    fileTexts = [] 
    fileTexts.append(getFileText(basePath + document)) 
print fileTexts[2] 

Я понимаю, что мой массив перезаписывается при каждом itteration, но я не могу понять, почему даже append не работает. Может кто-нибудь объяснить, как я должен определять/заполнять мой массив при каждом вызове функции getFileText?

+0

'append' не работает в вашем втором примере, потому что вы снова сделать новый список на каждой итерации цикла ... вам нужно поставить 'fileTexts = []' _outside_ (до) цикл, а затем использовать 'append' в цикле – Anentropic

+0

@ Энтропия: это больше похоже на ответ, чем комментарий, no ? – DSM

+0

Почему 'fileTexts [2]' когда он может иметь менее 3 элементов? – chapelo

ответ

2

Вы переустанавливаете список на [] на каждой итерации. Делайте это только до итерации:

fileTexts = [] 
for document in allFiles: 
    fileTexts.append(getFileText(basePath + document)) 
+0

О, мой, ты так прав. Я пропустил это, и это было так просто. –

Смежные вопросы