Question Trouver tous les fichiers dans un répertoire avec extension .txt en Python


Comment puis-je trouver tous les fichiers dans un répertoire ayant l'extension .txt en python?


1044
2017-10-19 01:09


origine


Réponses:


Vous pouvez utiliser glob:

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

ou simplement os.listdir:

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

ou si vous voulez traverser le répertoire, utilisez 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))

1652
2017-10-19 01:12



Utilisation glob.

>>> import glob
>>> glob.glob('./*.txt')
['./outline.txt', './pip-log.txt', './test.txt', './testingvim.txt']

180
2017-10-19 01:11



Quelque chose comme ça devrait faire le travail

for root, dirs, files in os.walk(directory):
    for file in files:
        if file.endswith('.txt'):
            print file

115
2017-10-19 01:11



Quelque chose comme ça va fonctionner:

>>> 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']

88
2017-10-19 01:13



J'aime os.walk ():

import os, os.path

for root, dirs, files in os.walk(dir):
    for f in files:
        fullpath = os.path.join(root, f)
        if os.path.splitext(fullpath)[1] == '.txt':
            print fullpath

Ou avec des générateurs:

import os, os.path

fileiter = (os.path.join(root, f)
    for root, _, files in os.walk(dir)
    for f in files)
txtfileiter = (f for f in fileiter if os.path.splitext(f)[1] == '.txt')
for txt in txtfileiter:
    print txt

25
2017-10-19 01:27



import os

path = 'mypath/path' 
files = os.listdir(path)

files_txt = [i for i in files if i.endswith('.txt')]

24
2017-07-14 18:29



Voici d'autres versions de la même qui produisent des résultats légèrement différents:

glob.iglob ()

import glob
for f in glob.iglob("/mydir/*/*.txt"): # generator, search immediate subdirectories 
    print f

glob.glob1 ()

print glob.glob1("/mydir", "*.tx?")  # literal_directory, basename_pattern

fnmatch.filter ()

import fnmatch, os
print fnmatch.filter(os.listdir("/mydir"), "*.tx?") # include dot-files

21
2017-10-19 18:41



path.py est une autre alternative: https://github.com/jaraco/path.py

from path import path
p = path('/path/to/the/directory')
for f in p.files(pattern='*.txt'):
    print f

17
2017-12-22 08:47