简单合并文件的最快方法是什么?拆分数组的最快方法是什么?

时间:2010-10-08 19:26:50

标签: python

获取文件列表和输出文件名称并将其合并到单个文件中同时删除重复行的最快方法是什么?

之类的东西

cat file1 file2 file3 | sort -u> out.file

在python中。

不想使用系统调用。

将python中的列表拆分为X块(列表列表)尽可能相等的最快方法是什么? (给出一个清单和X.)

2 个答案:

答案 0 :(得分:2)

首先:

lines = set()
for filename in filenames:
    with open(filename) as inF:
        lines.update(inF)
with open(outfile, 'w') as outF:
    outF.write(''.join(lines))

第二:

def chunk(bigList, x):
    chunklen = len(bigList) / x
    for i in xrange(0, len(bigList), chunklen):
        yield bigList[i:i+chunklen]

listOfLists = list(chunk(bigList, x))

答案 1 :(得分:-1)

第一个:

lines = []
for filename in filenames:
    f = open(filename)
    lines.extend(f.read().split('\n')
    f.close()
lines = list(set(lines)) #remove duplicates
f = open(outfile_name, 'w')
f.write(''.join(lines))

假设文件的长度合理,因为文件中的所有数据将同时存储在内存中。如果您想保留sort排序行的副作用,那么只需在写入文件之前添加lines.sort()

第二个:

step_size = len(orig_list)/num_chunks
split_list = [orig_list[i:i+step_size] for i in range(0, len(orig_list), step_size)]