2016-05-26 6 views
1

Есть ли способ расширить массив, который хранит данные из файла на каждой итерации for -loop и with команда комбо, используя glob. В настоящее время, у меня есть что-то вродеPython: Можете ли вы расширить массив на каждой итерации с помощью glob (или аналогичного) для чтения в файлах из каталога

import glob 
from myfnc import func 


for filename in glob.glob('*.dta'): 
    with open(filename,'rb') as thefile: 

     fileHead, data = func(thefile) 

где func определен в другом сценарии myfnc. Это делается на каждой итерации в каталоге, сохраняет данные из каждого файла в fileHead и data (в виде массивов), стирая все, что было на предыдущей итерации. Мне нужно что-то, что будет расширять каждый массив на каждом проходе. Есть ли хороший способ сделать это? Это не обязательно для цикла, с комбо. Именно так я читаю во всех файлах из каталога.

Я думал об инициализации массивов заранее, а затем попробовал их продлить после того, как with выполнен за один проход, но он дал мне какую-то ошибку с командой extend. С ошибкой, код будет выглядеть следующим

import glob 
from myfnc import func 

fileHead, data = [0]*2 


for filename in glob.glob('*.dta'): 
    with open(filename,'rb') as thefile: 

     fileHeadExtend, dataExtend = func(thefile) 

    fileHead.extend(fileHeadExtend) 
    data.extend(dataExtend) 

Таким образом, вопрос, что он имеет в fileHead и data оба инициализирован, но, как INT-х. Тем не менее, я не хочу, чтобы инициализировать массивы так много нулей. Здесь не должно быть никаких произвольных значений. Итак, вот где проблема лежит для этого.

+1

Добавить сообщение об ошибке Python на ваш вопрос. –

+0

'AttributeError: объект 'int' не имеет атрибута 'extend'' – Lou

+0

Теперь вам нужно выяснить, какая переменная является' int'. –

ответ

0

Вы хотите:

import glob 
from myfnc import func 

fileHead = list() 
data = list() 

for filename in glob.glob('*.dta'): 
    with open(filename,'rb') as thefile: 
     fileHeadExtend, dataExtend = func(thefile) 
    fileHead.extend(fileHeadExtend) 
    data.extend(dataExtend) 
+0

Это сделало трюк! Благодаря! – Lou