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
对于标题未标注为“转载”的文章均为原创,其版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
2012-01-11 《C和指针》学习备忘