代码之家  ›  专栏  ›  技术社区  ›  rxmnnxfpvg

简单列表理解

  •  3
  • rxmnnxfpvg  · 技术社区  · 14 年前

    files = [files for (subdir, dirs, files) in os.walk(rootdir)]
    

    files = [['filename1', 'filename2']] 
    

    当我想的时候

    files = ['filename1', 'filename2']
    

    如何防止循环通过那个元组?谢谢!

    4 回复  |  直到 11 年前
        1
  •  7
  •   John Kugelman Michael Hodel    14 年前

    这两项工作:

    [f for (subdir, dirs, files) in os.walk(rootdir) for f in files]
    
    sum([files for (subdir, dirs, files) in os.walk(rootdir)], [])
    

    $ find /tmp/test
    /tmp/test
    /tmp/test/subdir1
    /tmp/test/subdir1/file1
    /tmp/test/subdir2
    /tmp/test/subdir2/file2
    $ python
    >>> import os
    >>> rootdir = "/tmp/test"
    >>> [f for (subdir, dirs, files) in os.walk(rootdir) for f in files]
    ['file1', 'file2']
    >>> sum([files for (subdir, dirs, files) in os.walk(rootdir)], [])
    ['file1', 'file2']
    
        2
  •  3
  •   Tony Veijalainen    14 年前
    files = [filename for (subdir, dirs, files) in os.walk(rootdir) for filename in files]
    
        3
  •  2
  •   Anycorn    14 年前
    for (subdir, dirs, f) in os.walk(rootdir): files.extend(f)
    
        4
  •  0
  •   marbdq    14 年前
    import os, glob
    
    files = [file for file in glob.glob('*') if os.path.isfile(file)]
    

    如果文件有扩展名,则更简单的方法是:

    import glob
    files = glob.glob('*.*')