Python列出一个文件夹及其子目录的所有文件

774次阅读  |  发布于5年以前

python简介

Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。

Python由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年。

像Perl语言一样, Python 源代码同样遵循 GPL(GNU General Public License)协议。


    >>> import os
    >>> for i in os.walk("."):
    ... print i[0],"\n##",i[1],"\n##",i[2]
    ... 
    . #当前目录
    ## ['fa', 'out'] #当前目录中的子目录 
    ## ['meta_rna.sh', 'nohup.out', 'log.cpu', 'blast_seq.py']
    ./fa # 第一个子目录
    ## [] # 第一个子目录中的目录
    ## ['assemblyar_new_2.faa']
    ./out # 第二个子目录
    ## [] # 第二个子目录中的目录
    ## ['assemblyar_new_2.faa.coord', 'assemblyar_new_2.faa.mask', 'assemblyar_new_2.faa.seq', 'result_1.xm', 'result.xml', 'blast_seq.py']

也可以用 os.path.walk, 先定义一个访问文件夹的函数, VisitDir


    >>> def VisitDir(arg, dirname, names):
    ... for filespath in names:
    ... print os.path.join(dirname, filespath)
    ... 
    >>> path="."
    >>> os.path.walk(path, VisitDir, ())
    ./meta_rna.sh
    ./fa
    ./out
    ./nohup.out
    ./log.cpu
    ./blast_seq.py
    ./fa/assemblyar_new_2.faa
    ./out/assemblyar_new_2.faa.coord
    ./out/assemblyar_new_2.faa.mask
    ./out/assemblyar_new_2.faa.seq
    ./out/result_1.xm
    ./out/result.xml
    ./out/blast_seq.py
    >>> os.getcwd()
    '/home/served_pro/Find_nick'
    >>> abs_path= os.getcwd()
    >>> os.path.walk(abs_path, VisitDir, ())
    /home/served_pro/Find_nick/meta_rna.sh
    /home/served_pro/Find_nick/fa
    /home/served_pro/Find_nick/out
    /home/served_pro/Find_nick/nohup.out
    /home/served_pro/Find_nick/log.cpu
    /home/served_pro/Find_nick/blast_seq.py
    /home/served_pro/Find_nick/fa/assemblyar_new_2.faa
    /home/served_pro/Find_nick/out/assemblyar_new_2.faa.coord
    /home/served_pro/Find_nick/out/assemblyar_new_2.faa.mask
    /home/served_pro/Find_nick/out/assemblyar_new_2.faa.seq
    /home/served_pro/Find_nick/out/result_1.xm
    /home/served_pro/Find_nick/out/result.xml
    /home/served_pro/Find_nick/out/blast_seq.py

下面给大家介绍python列出文件夹下的所有文件


    #方法1:使用os.listdir
    import os
    for filename in os.listdir(r'c:\\windows'):
    print filename
    #方法2:使用glob模块,可以设置文件过滤
    import glob
    for filename in glob.glob(r'c:\\windows\\*.exe'):
    print filename
    #方法3:通过os.path.walk递归遍历,可以访问子文件夹
    import os.path
    def processDirectory ( args, dirname, filenames ):
    print 'Directory',dirname
    for filename in filenames:
    print ' File',filename
    os.path.walk(r'c:\\windows', processDirectory, None )
    #方法4:非递归
    import os
    for dirpath, dirnames, filenames in os.walk('c:\\\\winnt'):
    print 'Directory', dirpath
    for filename in filenames:
    print ' File', filename

另外,判断文件与目录是否存在:


    import os
    os.path.isfile('test.txt') #如果不存在就返回False
    os.path.exists(directory) #如果目录不存在就返回False

以上所述是小编给大家介绍的Python列出一个文件夹及其子目录的所有文件,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

Copyright© 2013-2020

All Rights Reserved 京ICP备2023019179号-8