python文件合并,有时通过MR跑数会生成N个小文件。
手工合并实在太讨嫌,所以就写了个Python自动合并脚本。
代码:
 
import os  
import os.path  
import sys  
  
if len(sys.argv)<2:  
    print 'merge file script must have enough parameters!'  
    sys.exit() 
rootdir = sys.argv[1]  
  
#rootdir = r'D:testing'  # 指明被遍历的文件夹  
  
rootdir = rootdir.replace('','/')  
  
if rootdir[len(rootdir)-1] == '/':  
    rootdir = rootdir[0:len(rootdir)-1]  
      
file_output = open( rootdir + '/' + 'merge.txt', 'w')  
  
for parent,dirnames,filenames in os.walk(rootdir):    #三个参数:分别返回1.父目录 2.所有文件夹名字(不含路径) 3.所有文件名字    
      
    '''''for dirname in dirnames:      #输出文件夹信息                  
        print "parent is:" + parent 
        print  "dirname is" + dirname 
    '''  
      
    for filename in filenames:   #输出文件信息    
                  
        if filename == 'merge.txt':    #获取文件不等于输出文件自己  
            continue  
        if filename.startswith('.'):  #过滤隐藏文件  
            continue   
              
        print "filename :" +filename    #记录遍历的文件  
          
        fi = open(rootdir + '/' + filename,'r')  
        while True:  
            s = fi.read(16*1024)  
            #if not s:  
            if s is None or s == "":  
                break  
            file_output.write(s)  
        file_output.write('n')  
          
file_output.close()  
 
快速文件拷贝参考高手的实现方式,http://bbs.csdn.net/topics/390440169
文件读取,按16k缓存进行。
 
最后输出一个文件。
使用方式:
 
在d盘下的testing文件夹中将所有的文件,文件夹不会遍历,进行合并。