Encuentre todos los archivos en un directorio con extensión .txt en Python
¿Cómo puedo encontrar todos los archivos en un directorio que tiene la extensión .txt
en Python?
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))
Utilice globo .
>>> import glob
>>> glob.glob('./*.txt')
['./outline.txt', './pip-log.txt', './test.txt', './testingvim.txt']
Algo así debería funcionar.
for root, dirs, files in os.walk(directory):
for file in files:
if file.endswith('.txt'):
print(file)
Puedes simplemente usar pathlib
s 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 pathlib
mó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 conda
o pip
): pathlib
y pathlib2
.
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']