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

最近喜欢上了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 关闭当前指定标题的窗口程序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qilei2010

送我一张彩票中了平分

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值