• Python获取目录、文件的注意事项


    Python获取指定路径下的子目录和文件有两种方法:

    os.listdir(dir)和os.walk(dir),前者列出dir目录下的所有直接子目录和文件的名称(均不包含完整路径),如

    >>> os.listdir(r'E:')
    ['$RECYCLE.BIN', 'Download', 'test.txt', 'data', 'MyDownloads', 'System Volume Information', 'VSPath', 'Youku Files']
    >>>

    后者,递归地获取dir目录下的所有子目录、文件,采用深度遍历的方式,详见http://www.cnblogs.com/herbert/archive/2013/01/07/2848892.html

    更详细的操作目录和文件的方法,如判断是否是文件,参考http://www.cnblogs.com/yuxc/archive/2011/08/01/2124012.html

    需要注意的是,使用os.walk()函数内部实际上调用了os.listdir(),另外,dir也是一个Python内建的函数,因此在任何地方都最好不要把dir作为参数变量传入函数(可以换个名字,如_dir等),否则可能会报奇怪的错误。

    以下是我遇到的一个错误:

    1 import os
    2 def getAllDataFiles(directory):
    3     dirsOrFiles=os.listdir(dir)
    4     print dirsOrFiles 
    5     
    6 if __name__=='__main__':
    7     print os.listdir('E:')
    8     getAllDataFiles('E:')

    第7行可以正确输出,第8行则会报错:TypeError: coercing to Unicode: need string or buffer, builtin_function_or_method found,本来出错的原因应该是不能识别dir变量,但因为python这里把它识别为内建的dir()函数,因此没有报类似"NameError: name 'dir' is not defined"这样的错误。



  • 相关阅读:
    非常简洁的js图片轮播
    js广告图片轮播
    图片轮播
    分享到QQ空间、新浪微博、腾讯微博和人人网
    五星简单操作
    Struts2 多文件上传
    CSS3实践之路(六):CSS3的过渡效果(transition)与动画(animation)
    JavaScript中的数据类型
    JavaScript中对象是否需要加引号?
    变量提升(hoisting)
  • 原文地址:https://www.cnblogs.com/aaronhoo/p/5157170.html
Copyright © 2020-2023  润新知