2015-07-29 2 views
0

У меня есть несколько тысяч списков в текстовых файлах. Например:Объединить много списков из текстовых файлов

text1.txt:

1,2,3,4 

text2.txt:

a,b,c,d 

Я хочу, чтобы открыть все свои текстовые файлы и поместить их всех в один список, например, так:

[1,2,3,4,a,b,c,d] 

Однако все петли я попытался либо дать мне список массивов как:

[array([1,2,3,4]),array([a,b,c,d)]] 

Или они просто вернут меня [1,2,3,4].

Это самый последний код, который я попробовал:

file_list=glob.glob(file_dir+'/*.txt') 
data=[] 
for file_path in file_list: 
    data.append(np.concatenate([np.genfromtxt(file_path, delimiter=',')])) 

Который только помещает первый список в данных. Без конкатенации он помещает эти два списка в данные в виде списка из двух отдельных массивов.

ответ

2

собирать массивы в списке, data, затем вызовите np.concatenate раз присоединиться к списку массивов в один массив:

data=[] 
for file_path in glob.glob(file_dir+'/*.txt') 
    data.append(np.genfromtxt(file_path, delimiter=',')) 
result = np.concatenate(data) 

С np.genfromtxt может принять генератор в качестве первого аргумента, вы также можете избежать формирования большого количества небольших отдельных массивов на , создавая выражение генератора, которое дает все строки из всего текста файлов:

import glob 
import itertools as IT 

lines = IT.chain.from_iterable(open(file_path, 'r') 
           for file_path in glob.glob('*.txt')) 
result = np.genfromtxt(lines, delimiter=',', dtype=None)