Di Python 3.5 dan yang lebih baru, gunakan **/
fungsi rekursif baru :
configfiles = glob.glob('C:/Users/sam/Desktop/file1/**/*.txt', recursive=True)
Saat recursive
disetel, **
diikuti dengan pemisah jalur yang cocok dengan 0 atau lebih subdirektori.
Dalam versi Python sebelumnya, glob.glob()
tidak dapat mencantumkan file di subdirektori secara rekursif.
Dalam hal ini saya akan menggunakan os.walk()
kombinasi dengan fnmatch.filter()
:
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')]
Ini akan menjalankan direktori Anda secara rekursif dan mengembalikan semua nama jalur absolut ke .txt
file yang cocok . Dalam kasus khusus ini yang fnmatch.filter()
mungkin berlebihan, Anda juga bisa menggunakan .endswith()
tes:
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')]