您的位置:首页 > 编程语言 > Python开发

Python实现txt文件内容快速合并功能

2011-11-29 16:36 1031 查看
这段时间三天两头断电断网的,真是背到家了,明后两天寝室楼更是要因为线路改造要从早上7点停到晚上5点半,真是悲剧。

今天汇编的时候在阿甘的博客里面看到了一部小说《疯狂的程序员》,于是网上搜了下准备放到手机里闲时看看,无奈下载后发现是分章节的txt文本,一共有87个文件,考虑到阅读起来不是很方便,于是想找个现成的工具合并txt文本。

结果尝试了几个工具后觉得合并效果都不给力啊,于是打算自己动手。其实cmd的命令"type *.txt >> crazy-programmer.txt"还是很有效果的,然而合并后的txt文件却十分庞大,所以我还是自己写了一个脚本完成了合并。

说明:由于我下载的87个txt文件的字符编码格式都不统一,所以我用chardet模块判断字符编码类型后再用codecs模块的codecs.open功能解决了编码问题。如果直接用file的open打开txt文件的话,在UCS-2 Little Endian的编码情况下,file.read()遇到中文的冒号(即“:”)后会无法读取冒号以后的内容,所以需要用codecs.open(path,'r',encoding)来解决。

如果还有问题可以留言,代码如下:

#!coding: cp936
import codecs, chardet

def fileopen(filename):
f = open(filename, 'r')
s = f.read()
if(chardet.detect(s)['encoding'] == 'UTF-16LE'):
f.close()
f = codecs.open(filename, 'r', 'utf-16-le')
data = f.read().encode('gb2312', 'ignore')
f.close()
elif(chardet.detect(s)['encoding'] == 'GB2312'):
data = s
f.close()
return data

i = 1
while i <=87:
if(i < 10):
filename = '0'+str(i)+'.txt'
else:
filename = str(i)+'.txt'
text = fileopen(filename)
file('crazy-p.txt', 'a+').write(text)
i = i+1
其中,chardet模块需要下载安装,脚本还可以改进以适应更多种情况,我就懒了。

最后分享下我合并好的《疯狂的程序员》txt文件,请猛击这里下载。(如果链接过期请留言提醒我续期,谢谢)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: