Pertanyaan Temukan semua file di direktori dengan ekstensi .txt dengan Python


Bagaimana saya bisa menemukan semua file dalam direktori yang memiliki ekstensi .txt di python?


1044
2017-10-19 01:09


asal


Jawaban:


Kamu dapat memakai glob:

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

atau sederhananya os.listdir:

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

atau jika Anda ingin melintasi direktori, gunakan 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



Menggunakan gumpal.

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

180
2017-10-19 01:11



Sesuatu seperti itu harus melakukan pekerjaan itu

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

115
2017-10-19 01:11



Sesuatu seperti ini akan berfungsi:

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



saya suka 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

Atau dengan generator:

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



Berikut ini lebih banyak versi yang sama yang menghasilkan hasil yang sedikit berbeda:

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