Найти - Пользователи
Полная версия: AttributeError: 'module' object has no attribute 'MIME_TYPE'
Начало » Python для новичков » AttributeError: 'module' object has no attribute 'MIME_TYPE'
1 2
Alen
ajk
В найденном файле /usr/local/lib/python2.6/dist-packages/magic.py константа MIME_TYPE отсутствует. Кстати, есть ещё каталог /usr/local/lib/python3.1/dist-packages,

А может проще Ubuntu обновить? А то зачем использовать дистрибутив 6 летней давности?
py.user.next
ajk
У меня Убунта и установка модулей идет через apt-get install python-magic
но rpm есть и он говорит
Ну, там в apt должен быть аналогичный просмотр содержимого пакета. Просто нужно просмотреть эти пути, чтобы убедиться, что ты смотришь именно тот файл.

ajk
В найденном файле /usr/local/lib/python2.6/dist-packages/magic.py
А что он делает в /usr/local ? Туда обычно ставятся пакеты, которых нет в репозитории.

ajk
При тупом же добавлении оной константы, скрипт на том же месте требует еще некий модуль
Возможно, у тебя питон неправильно установлен.

Система тоже, походу, старая. Версия питона 3.1 была давным давно в репозитории.
[guest@localhost ~]$ rpm -q python3
python3-3.3.2-9.fc20.i686
[guest@localhost ~]$
У меня в 20-й федоре (тоже не новая) в репозитории версия 3.3 уже.
terabayt
у вас должно быть
magic.MAGIC_MIME
вместо
magic.MIME_TYPE
там, походу, сильно версии отличаются
ajk
Есть мнение (на форуме Убунту), что все дело в версии 2.6 против 2.7 у автора.

Чё делать?
Alen
ajk
Чё делать?

Сделать обновление системы.
terabayt
Alen
Сделать обновление системы.
не думаю что поможет, так как в python-magic нету MIME_TYPE
а вот это может и работать
# -*- coding: utf-8 -*-
'''
'''
import sys, os, zipfile, hashlib, pprint
import xml.parsers.expat, magic
mime = magic.Magic(mime=True)
tags = dict()
files = 0
reload(sys)
sys.setdefaultencoding('utf-8')
def start_element(name, attrs):
    tags[name] = tags[name] + 1 if name in tags else 1
def parse_dir(fn):
    dirlist = os.listdir(fn)
    dirlist.sort()
    for i in dirlist:
        parse_file(os.path.join(fn, i))
def parse_file(fn):
    m = mime.from_file(fn)
    if (m == 'application/zip'):
        parse_zip(fn)
    elif (m == 'application/xml'):
        parse_fb2(fn)
    else:
        print >> sys.stderr, 'Unknown mime type (%s) of file %s' % (m, fn)
def parse_zip(fn):
    print >> sys.stderr, 'Zip:', os.path.basename(fn)
    z = zipfile.ZipFile(fn, 'r')
    filelist = z.namelist()
    filelist.sort()
    for n in filelist:
        try:
            parse_fb2(z.open(n))
            print >> sys.stderr, n
        except:
            print >> sys.stderr, 'X:', n
def parse_fb2(fn):
    global files
    if isinstance(fn, str):
        fn = open(fn)
    parser = xml.parsers.expat.ParserCreate()
    parser.StartElementHandler = start_element
    parser.Parse(fn.read(), True)
    files += 1
def print_result():
    out = open('result.txt', 'w')
    for k, v in tags.iteritems():
        out.write(u'%s\t%d\n' % (k, v))
    print 'Files:', files
if (__name__ == '__main__'):
    if len(sys.argv) != 2:
        print >> sys.stderr, 'Usage: %s <xmlfile|zipfile|folder>' % sys.argv[0]
        sys.exit(1)
    src = sys.argv[1]
    if (os.path.isdir(src)):
        parse_dir(src)
    else:
        parse_file(src)
    print_result()
Alen
terabayt
не думаю что поможет, так как в python-magic нету MIME_TYPE

Тогда может в этом всё и дело.
ajk
terabayt
не думаю что поможет, так как в python-magic нету MIME_TYPEа вот это может и работать
Другая ошибка:
./thisfile2b.py: строка 3:
: команда не найдена
import: unable to grab mouse `': Ресурс временно недоступен @ xwindow.c/XSelectWindow/8993.
./thisfile2b.py: строка 6: ошибка синтаксиса около неожиданной лексемы `('
./thisfile2b.py: строка 6: `mime = magic.Magic(mime=True)'

А можете объяснить смысл строк?
mime = magic.Magic(mime=True)
tags = dict()
files = 0
reload(sys)
def start_element(name, attrs):
tags = tags + 1 if name in tags else 1
и как оригинал
mime = magic.open(magic.MIME_TYPE)

Текст далее в целом понятен, хотя нужно что-то почитать. Всё таки прикольный язык
ajk
Alen
Тогда может в этом всё и дело.
Это - да… Тут нужно будет подумать…
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB