• python 检索文件夹


    在网上看到了一段python检索文件的程序,感觉不错,模仿着写了一段,但是发现无法检索带有中文的文件夹。查阅了一些资料后,才知道python(我用的2.6)对中文的支持很麻烦。可是皇天不负有心人,经过一系列的摸索,终于完成了对源程序的改良,现在,它可以检索任何文件夹了。
    程序如下:
    Code:

    #coding:utf-8
    #Filename:dir.py

    import os
    class dir(object):
    def __init__(self):
    self.count=0
    self.space=""
    self.list=[]
    def p(self,url):
    if type(url).__name__!="unicode":
    url=unicode(url,"utf-8")
    else:
    pass
    files=os.listdir(url)
    for file in files:

    myfile=url+"\\"+file
    print myfile
    size=os.path.getsize(myfile)
    if os.path.isfile(myfile):
    string=self.space+"|____"+file+str(size)+"\n"
    string=string.encode("utf-8")
    self.list.append(string)

    if os.path.isdir(myfile):
    string=self.space+"|____"+file+"\n"
    string=string.encode("utf-8")
    self.list.append(string)
    self.space=self.space+"|"
    self.p(myfile)
    self.space=self.space[:-5]
    return self.list
    def writeList(self,url):
    f=open(url,'w')
    f.writelines(self.list)
    print "ok"
    f.close()

    if __name__=="__main__":
    d=dir()
    d.p("D:\\张东升\\测试用例管理系统")
    d.writeList("d:/python.txt")

    在使用os.listdir(url)时,传入的参数如果有中文汉字,就无法正常使用,原因在于,有汉字时,print type(url) ,这时,可以发现,是<type 'str'>,而listdir()需要传入的参数类型应该是 <type 'unicode'>,所以,在p(self,url)的最开始,先进行一次转化。转化时,先判断传入的参数是不是<type 'unicode'>,如果不是,才转化,否则会出错。
    另外f.writelines(self.list)时,list列表中的元素必须是str类型的,但是经过 string=self.space+"|____"+file+str(size)+"\n"后,string的编码类型为unicode,原因在于file的编码类型是unicode,其他三个会在执行+操作时自动转换,所以需要在转化为str类型。
    说起来很拗口,因为我也搞不清楚这些个类型之间的关系,但不管怎样,总算是可以运行了。

    from:http://www.testwo.com/space-1824-do-blog-id-3267.html
    =============================
    其实os.listdir(path),path只接受str和unicode,如果是unicode,则返回unicode的list;如果是str的则返回str的list(这里面可能会有不同的编码,这取决于这个path下是否有不同编码的文件或目录名。换句话说就是返回跟文件名一样的编码的str。)
  • 相关阅读:
    机器学习中的数学(1)-回归(regression)、梯度下降(gradient descent)
    机器学习中的数学(4)-线性判别分析(LDA), 主成分分析(PCA)
    机器学习中的数学(5)-强大的矩阵奇异值分解(SVD)及其应用
    Shell遍历文件的每一行[转载]
    从C中变化过来的各种语言的printf输出格式
    PostgreSQL中的引号和null
    linux入门基础_centos(二)--fdisk分区
    linux入门基础_centos(一)--基础命令和概念
    centos中设置apache显示目录列表
    转载:centos上yum安装apache+php+mysql等
  • 原文地址:https://www.cnblogs.com/dkblog/p/1980640.html
Copyright © 2020-2023  润新知