有时候通过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缓存进行。
最后输出一个文件。
使用方式:
python merger.py d:\testing
在d盘下的testing文件夹中将所有的文件,文件夹不会遍历,进行合并。