Как получить все типы расширений файлов в каталоге, используя os.walk или glob.glob - PullRequest
0 голосов
/ 14 марта 2019

У меня есть код, который определяет язык файлов из каталога. Но, упоминая о типе расширения, как я могу определить язык всех расширений файлов (например: .pdf, .xlsx, .docx и т. Д.) В каталоге, а не только .txt файлы, которые упоминаются в коде. Прикрепление кода для справки. Я хотел бы знать, как это можно сделать с помощью glob и os.walk.

import csv
from fnmatch import fnmatch
try:
    from langdetect import detect
except ImportError:
    detect = lambda _: '<dunno>'
import os

rootdir = '.'  # current directory
extension = '.txt'
file_pattern = '*' + extension

with open('output.csv', 'w', newline='', encoding='utf-8') as outfile:
    csvwriter = csv.writer(outfile)

    for dirpath, subdirs, filenames in os.walk(os.path.abspath(rootdir)):
        for filename in filenames:
            if fnmatch(filename, file_pattern):
                lang = detect(os.path.join(dirpath, filename))
                csvwriter.writerow([dirpath, filename, lang])

1 Ответ

2 голосов
/ 14 марта 2019

IIUC вы можете заменить ваш fnmatch чек на

eoi = ['*.pdf', '*.xlsx', '*.docx', '*.txt']     # extensions of interest list
if any(fnmatch(file, ext) for ext in eoi):
    lang = ... 
...