zoukankan      html  css  js  c++  java
  • 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"这样的错误。



  • 相关阅读:
    【团队分享之二】IT团队绩效提升的一些见解
    我的ef连接mysql之旅
    Python3.5-20190501-廖老师的
    新装ubantu 18.04(自用)
    nginx配置url重写
    docker中crontab无法执行
    bootstrap
    mysql set
    mysqldump导出数据
    XGBoost 学习调参的例子
  • 原文地址:https://www.cnblogs.com/aaronhoo/p/5157170.html
Copyright © 2011-2022 走看看