Python合并多个UTF-16格式txt文件

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qilei2010/article/details/51569546

最近喜欢上了Python脚本,确实方便。因为需要考试,而备考材料是个被制作成了SWF格式的Word文件,于是我用 Flash Decompiler Trillix intro反编译(该软件做的不是很好,若是针对特定文件类型进行反编译效果会更好)后得到100多个零碎的txt,每个txt就才几段话,我就打算用Python合并为一个txt。

源代码(Python2.7):

# -*- coding: cp936 -*-
#!/usr/bin/env python
import os
import codecs

#小文件的目录
path = "c:\pTest\Texts"

#最终文件
goal = codecs.open('all.txt','w','utf-8')

for root,dirs,files in os.walk(path):
    #print("files: ", files)
    for name in files:
        #原文件是utf16,不加会乱码
        eachfile = codecs.open(path+'\\'+name,'r', 'utf-16_le')
        #print eachfile
        while True:
            s = eachfile.read(16*1024)
            if not s:
                break
            goal.write(s)
        eachfile.close()
    goal.close()

遇到的问题

  1. 合并后的文件打开一看,出现乱码。然后我用 Sublime Text 打开那些小txt一看,居然是 UTF-16 LE with BOM,怪不得乱码。然后参考下面的参考文章,使用Python的编码格式转换库 codecs 来打开指定编码格式的文件,这样就没有出错了。
  2. 打开文件需要指定 utf-16-le 格式,被写入的文件也需要指定打开格式 utf-8,否则在Windows 系统中,因为被写入文件 all.txt 默认是 ASCII 格式编码不能支持 汉字而报错。
  3. 貌似Python 对编码格式 字符串 utf-16_le 还是 utf_16_le 没有严格限制。

参考

  1. 文件编码格式:Python的codecs模块
    python读取Unicode和ANSI编码的文件 代码
  2. 遍历目录读写文件:python 多个txt文件合并成一个txt文件

其他

待写 Python 关闭当前指定标题的窗口程序。

猜你喜欢

转载自blog.csdn.net/qilei2010/article/details/51569546