Encuentre todos los archivos en un directorio con extensión .txt en Python

Resuelto usertest asked hace 13 años • 25 respuestas

¿Cómo puedo encontrar todos los archivos en un directorio que tiene la extensión .txten Python?

usertest avatar Oct 19 '10 08:10 usertest
Aceptado

Puedes usar glob:

import glob, os
os.chdir("/mydir")
for file in glob.glob("*.txt"):
    print(file)

o simplemente os.listdir:

import os
for file in os.listdir("/mydir"):
    if file.endswith(".txt"):
        print(os.path.join("/mydir", file))

o si desea recorrer el directorio, utilice os.walk:

import os
for root, dirs, files in os.walk("/mydir"):
    for file in files:
        if file.endswith(".txt"):
             print(os.path.join(root, file))
ghostdog74 avatar Oct 19 '2010 01:10 ghostdog74

Utilice globo .

>>> import glob
>>> glob.glob('./*.txt')
['./outline.txt', './pip-log.txt', './test.txt', './testingvim.txt']
Muhammad Alkarouri avatar Oct 19 '2010 01:10 Muhammad Alkarouri

Algo así debería funcionar.

for root, dirs, files in os.walk(directory):
    for file in files:
        if file.endswith('.txt'):
            print(file)
Adam Byrtek avatar Oct 19 '2010 01:10 Adam Byrtek

Puedes simplemente usar pathlibs 1 :glob

import pathlib

list(pathlib.Path('your_directory').glob('*.txt'))

o en un bucle:

for txt_file in pathlib.Path('your_directory').glob('*.txt'):
    # do something with "txt_file"

Si lo quieres recursivo puedes usarrglob('*.txt')

Esto es como llamar a Path.glob() con "**/" agregado delante del patrón relativo dado


1 El pathlibmódulo se incluyó en la biblioteca estándar de Python 3.4. Pero puedes instalar back-ports de ese módulo incluso en versiones anteriores de Python (es decir, usando condao pip): pathliby pathlib2.

MSeifert avatar Apr 28 '2017 00:04 MSeifert

Algo como esto funcionará:

>>> import os
>>> path = '/usr/share/cups/charmaps'
>>> text_files = [f for f in os.listdir(path) if f.endswith('.txt')]
>>> text_files
['euc-cn.txt', 'euc-jp.txt', 'euc-kr.txt', 'euc-tw.txt', ... 'windows-950.txt']
Seth avatar Oct 19 '2010 01:10 Seth