什么是简单合并文件的最快捷方式,什么是分割数组的最快捷方式?

什么是简单合并文件的最快捷方式,什么是分割数组的最快捷方式?

问题描述:

在删除重复行的同时,将文件列表和输出文件的名称合并为单个文件的最快捷方式是什么? 类似于什么是简单合并文件的最快捷方式,什么是分割数组的最快捷方式?

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

in python。

宁愿不使用系统调用。

AND:

什么是在Python到X块(名单列表)拆分列表尽可能相等,最快捷的方式? (给定一个列表和X.)

+0

大块应保持在原来的列表中的顺序。这里的平等是指大小。所以对于X = 2,LIST =(x1,x2,x3,x4)被分成((x1,x2),(x3,x4))。 – cokacola 2010-10-08 19:28:03

+0

最快,你的意思是写的最快还是最快?另外,你是否想要保留行顺序? – JoshD 2010-10-08 19:30:06

+3

你应该把这个问题分成两部分 - 你所要求的东西不相互关联,需要分开。 – 2010-10-08 19:36:11

对于第一:

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)] 

第一:

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))