我在文本文件中有几千个列表。例如:
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=',')]))
将第一个列表放入data。在不连接的情况下,它将两个列表作为两个独立数组的列表放入data中。
收集列表中的数组,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)