Getting Every File in a Windows Directory

后端 未结 5 1661
囚心锁ツ
囚心锁ツ 2020-12-24 07:31

I have a folder in Windows 7 which contains multiple .txt files. How would one get every file in said directory as a list?

相关标签:
5条回答
  • 2020-12-24 07:51

    You can use os.listdir(".") to list the contents of the current directory ("."):

    for name in os.listdir("."):
        if name.endswith(".txt"):
            print(name)
    

    If you want the whole list as a Python list, use a list comprehension:

    a = [name for name in os.listdir(".") if name.endswith(".txt")]
    
    0 讨论(0)
  • 2020-12-24 08:07

    All of the answers here don't address the fact that if you pass glob.glob() a Windows path (for example, C:\okay\what\i_guess\), it does not run as expected. Instead, you need to use pathlib:

    from pathlib import Path
    
    glob_path = Path(r"C:\okay\what\i_guess")
    file_list = [str(pp) for pp in glob_path.glob("**/*.txt")]
    
    0 讨论(0)
  • 2020-12-24 08:10
    import os
    import glob
    
    os.chdir('c:/mydir')
    files = glob.glob('*.txt')
    
    0 讨论(0)
  • 2020-12-24 08:14
    import fnmatch
    import os
    
    return [file for file in os.listdir('.') if fnmatch.fnmatch(file, '*.txt')]
    
    0 讨论(0)
  • 2020-12-24 08:14

    If you just need the current directory, use os.listdir.

    >>> os.listdir('.') # get the files/directories
    >>> [os.path.abspath(x) for x in os.listdir('.')] # gets the absolute paths
    >>> [x for x in os.listdir('.') if os.path.isfile(x)] # only files
    >>> [x for x in os.listdir('.') if x.endswith('.txt')] # files ending in .txt only
    

    You can also use os.walk if you need to recursively get the contents of a directory. Refer to the python documentation for os.walk.

    0 讨论(0)
提交回复
热议问题