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,如需转载请自行联系原作者

目录
相关文章
|
16天前
|
Python
【python】python跨文件使用全局变量
【python】python跨文件使用全局变量
|
25天前
|
监控 数据处理 索引
使用Python批量实现文件夹下所有Excel文件的第二张表合并
使用Python和pandas批量合并文件夹中所有Excel文件的第二张表,通过os库遍历文件,pandas的read_excel读取表,concat函数合并数据。主要步骤包括:1) 遍历获取Excel文件,2) 读取第二张表,3) 合并所有表格,最后将结果保存为新的Excel文件。注意文件路径、表格结构一致性及异常处理。可扩展为动态指定合并表、优化性能、日志记录等功能。适合数据处理初学者提升自动化处理技能。
21 1
|
30天前
|
存储 并行计算 Java
Python读取.nc文件的方法与技术详解
本文介绍了Python中读取.nc(NetCDF)文件的两种方法:使用netCDF4和xarray库。netCDF4库通过`Dataset`函数打开文件,`variables`属性获取变量,再通过字典键读取数据。xarray库利用`open_dataset`打开文件,直接通过变量名访问数据。文中还涉及性能优化,如分块读取、使用Dask进行并行计算以及仅加载所需变量。注意文件路径、变量命名和数据类型,读取后记得关闭文件(netCDF4需显式关闭)。随着科学数据的增长,掌握高效处理.nc文件的技能至关重要。
108 0
|
1月前
|
Python
python中文件和异常处理方法(二)
python中文件和异常处理方法(二)
13 0
|
1月前
|
Python
python中文件和异常处理方法(一)
python中文件和异常处理方法(一)
29 0
|
1月前
|
Python
python中文件和异常处理方法(三)
python中文件和异常处理方法(三)
19 0
|
2天前
|
索引 容器
06-python数据容器-list列表定义/list的10个常用操作/列表的遍历/使用列表取出偶数
06-python数据容器-list列表定义/list的10个常用操作/列表的遍历/使用列表取出偶数
|
16天前
|
C++ Python
【C++/Python】C++调用python文件
【C++/Python】C++调用python文件
|
17天前
|
JSON 数据处理 数据格式
Python中的文件读写操作详解
【4月更文挑战第2天】在Python中,文件读写操作是数据处理和程序开发的重要部分。通过文件,我们可以将信息持久化地保存在磁盘上,并在需要时读取和使用这些数据。Python提供了丰富的内置函数和模块,使得文件读写变得简单而高效。本文将详细介绍Python中文件读写的基本操作和常用方法。
|
29天前
|
开发者 Python
Python语言的文件及目录访问
Python语言的文件及目录访问

热门文章

最新文章