Python遍历路径下文件并转换成UTF-8编码-阿里云开发者社区

开发者社区> 长征6号> 正文

Python遍历路径下文件并转换成UTF-8编码

简介:
+关注继续查看

开始学Python,这篇文章来自于应用需求。

  os.walk很方便,下面写了两个版本的函数进行遍历,分别是不使用walk和使用walk的。

复制代码
import sys
import string
import os

def detect_nowalk(dir_path):
    files = os.listdir(dir_path)
    for filename in files:
        print "file:%s\n" % filename
        next = os.path.join(dir_path, filename)
        if os.path.isdir(next):
            print "file folds:%s\n" % filename
            detect_nowalk(next)

if __name__ == "__main__":
    detect_nowalk(".")
复制代码
复制代码
import sys
import os

def detect_walk(dir_path):
    for root, dirs, files in os.walk(dir_path):
        for filename in files:        
            print "file:%s\n" % filename
        for dirname in dirs:
            print "dir:%s\n" % dirname

if __name__ == "__main__":
    detect_walk(".")
复制代码

  另外附上使用第一种方法转换文件编码的源码,有的文件转换后用gedit打开是乱码,但用vi查看是正确的。

复制代码
import sys
import string
import codecs
import os
import shutil

def gbkToUtf8(path):
    files = os.listdir(path)
    for filename in files:
        if os.path.isdir(filename):
            print "file folds:%s\n" % filename
            gbkToUtf8(filename)
            continue

        try:
            tokens = string.splitfields(filename, '.')
            if len(tokens) != 2 or tokens[1] != 'txt':
                #print tokens[1]
                continue
            else:
                print 'Encode Converting (GBK to UTF-8) : ', filename
                utfFile=open(filename)
                tstr = utfFile.read()
                #tstr = utfFile.read().decode("gbk") is wrong
                tstr = tstr.encode("UTF-8")
                utfFile.close()
                utfFile = open(filename, 'w')
                utfFile.write(tstr)
                utfFile.close()
        except:
            print "error %s" %filename
        
if __name__ == "__main__":
    gbkToUtf8(".")
复制代码

 

1.14更新:发现linux自带的iconv -f gb18030 -t utf8 a.txt >> b.txt更好用,而且有的用decode("gb18030")会出现乱码("gbk"一样乱码)的情况不再存在。在python脚本不难调用,就不详细写了。

 

 




本文转自五岳博客园博客,原文链接:http://www.cnblogs.com/wuyuegb2312/archive/2013/01/11/2856772.html,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
C++转换unicode utf-8 gb2312编码
windows开发环境下用VC++6.0 对unicode 、utf-8、 gb2312 三种编码格式之间的转换方法:   [cpp] view plaincopy   #include    #include    #include    using namesp...
1163 0
java项目编码格式转换(如GBK转UTF-8)
昨天突然下了个Java项目,把项目导入到eclipse中,发现项目是gbk编码格式想把项目变为utf-8,但是发现转换格式比较麻烦就写了这个代码,后面改进了下,想到说不定有人也需要就把它写了出来 代码如下 代码比较简单看懂了自己可以写一下,可以当做一个关于io流的一个练习 import java.
1730 0
跨平台Unicode与UTF8互转代码
参考来源:http://blog.csdn.net/flying8127/article/details/1598521 在原来原基础上,将代码整理,并加强安全性. 并按照WindowsAPI设计, 添加输出缓冲长度探测功能 当OutUTFString为NULL时, 可以进行输出的UTF8字符串...
802 0
用shell批量编码转换
-------------------------------------文件内容转换:iconv-------------------------------------- 通常,从其他平台拷贝过来(Linux)的文件,比如mac或win,打开后都是有编码错误的,尤其是中文编码。
1382 0
+关注
1224
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《Nacos架构&原理》
立即下载
《看见新力量:二》电子书
立即下载
云上自动化运维(CloudOps)白皮书
立即下载