获取文件列表和输出文件名称并将其合并到单个文件中同时删除重复行的最快方法是什么?
之类的东西cat file1 file2 file3 | sort -u> out.file
在python中。
不想使用系统调用。
和
将python中的列表拆分为X块(列表列表)尽可能相等的最快方法是什么? (给出一个清单和X.)
答案 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)]