У меня есть папка в Windows 7, которая содержит несколько файлов .txt
. Как получить каждый файл в указанном каталоге в виде списка?
Получение каждого файла в каталоге Windows
Ответ 1
Вы можете использовать os.listdir(".")
, чтобы отобразить содержимое текущего каталога ( "." ):
for name in os.listdir("."):
if name.endswith(".txt"):
print(name)
Если вы хотите, чтобы весь список был списком Python, используйте понимание списка:
a = [name for name in os.listdir(".") if name.endswith(".txt")]
Ответ 2
import os
import glob
os.chdir('c:/mydir')
files = glob.glob('*.txt')
Ответ 3
import fnmatch
import os
return [file for file in os.listdir('.') if fnmatch.fnmatch(file, '*.txt')]
Ответ 4
Все ответы здесь не glob.glob()
тот факт, что если вы передаете glob.glob()
путь Windows (например, C:\okay\what\i_guess\
), он не будет работать так, как ожидалось. Вместо этого вам нужно использовать 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")]
Ответ 5
Если вам нужен только текущий каталог, используйте 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
Вы также можете использовать os.walk, если вам нужно рекурсивно получить содержимое каталога. Обратитесь к документации python для os.walk.