首页 > 编程语言 > 详细

Python遍历路径下所有文件

时间:2014-01-17 19:05:25      阅读:817      评论:0      收藏:0      [点我收藏+]

开始学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脚本不难调用,就不详细写了。

Python遍历路径下所有文件

原文:http://www.cnblogs.com/pythonworld/p/3524331.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!