Использование python magi c для фильтрации файлов по типу MIME - PullRequest
1 голос
/ 11 июля 2020

У меня есть набор файлов в каталоге, и я использую библиотеку python -magi c, чтобы отфильтровать файлы типа «text / plain» и удалить все не «text / plain». файлы. Ниже приведен код, который я использую

import os
import magic
def ftype(path):
    fpath = path
    mime = magic.Magic(mime=True)
    for root, dirs, fnames in os.walk(path):
        for fname in fnames:
                mi = mime.from_file(fpath+'\\'+fname)
                if not mi.endswith('plain'):
                    os.remove(fpath + '\\' + fname)
                    print(fname)
                else:
                    pass

ftype('filepath')

. Я могу успешно запустить скрипт для небольшого набора файлов. Однако, когда я запустил сценарий в каталоге, в котором было около 40000 файлов, я получил следующую ошибку:

Traceback (most recent call last):
  File "C:\Users\dmg\AppData\Local\Programs\Python\Python37\lib\site-packages\magic\magic.py", line 91, in from_file
    return self._handle509Bug(e)
  File "C:\Users\dmg\AppData\Local\Programs\Python\Python37\lib\site-packages\magic\magic.py", line 100, in _handle509Bug
    raise e
  File "C:\Users\dmg\AppData\Local\Programs\Python\Python37\lib\site-packages\magic\magic.py", line 89, in from_file
    return maybe_decode(magic_file(self.cookie, filename))
  File "C:\Users\dmg\AppData\Local\Programs\Python\Python37\lib\site-packages\magic\magic.py", line 255, in magic_file
    return _magic_file(cookie, coerce_filename(filename))
  File "C:\Users\dmg\AppData\Local\Programs\Python\Python37\lib\site-packages\magic\magic.py", line 196, in errorcheck_null
    raise MagicException(err)
magic.magic.MagicException: b"line I64u: regex error 14 for `^[[:space:]]*class[[:space:]]+[[:digit:][:alpha:]:_]+[[:space:]]*\\{(.*[\n]*)*\\}(;)?$', (failed to get memory)"

Я не уверен, в чем проблема. Может ли кто-нибудь помочь мне с этим или есть какие-либо альтернативные подходы для выполнения вышеуказанной операции.

*

Обновление: проблема все еще существует после опробования некоторых методов, указанных в комментариях ниже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...