Python 3.5 ve daha yeni sürümlerde, yeni özyinelemeli **/
işlevselliği kullanın :
configfiles = glob.glob('C:/Users/sam/Desktop/file1/**/*.txt', recursive=True)
Ayarlandığında recursive
, **
ardından bir yol ayırıcısı 0 veya daha fazla alt dizinle eşleşir.
Önceki Python sürümlerinde, glob.glob()
alt dizinlerdeki dosyaları özyinelemeli olarak listeleyemez.
Bu durumda os.walk()
, fnmatch.filter()
bunun yerine şunu birlikte kullanırdım:
import os
import fnmatch
path = 'C:/Users/sam/Desktop/file1'
configfiles = [os.path.join(dirpath, f)
for dirpath, dirnames, files in os.walk(path)
for f in fnmatch.filter(files, '*.txt')]
Bu, dizinlerinizi yinelemeli olarak gezer ve tüm mutlak yol adlarını eşleşen .txt
dosyalara döndürür . Bu özel durumda fnmatch.filter()
aşırı olabilir, ayrıca bir .endswith()
test de kullanabilirsiniz :
import os
path = 'C:/Users/sam/Desktop/file1'
configfiles = [os.path.join(dirpath, f)
for dirpath, dirnames, files in os.walk(path)
for f in files if f.endswith('.txt')]