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文件夹中将所有的文件,文件夹不会遍历,进行合并。