Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 7, 2013 19:01:54

Inok
Зарегистрирован: 2013-09-11
Сообщения: 41
Репутация: +  -1  -
Профиль   Отправить e-mail  

Python 3. rarfile

День добрый.
Есть задача, добраться до содержимого в архиве. Архив в формате *.rar.
Набрел на модуль rarfile, но столкнулся с глупой проблемой, немогу воспроизвести даже пример из официальной документации по модулю

https://rarfile.readthedocs.org/en/latest/api.html
Example:
import rarfile
rf = rarfile.RarFile('myarchive.rar')
for f in rf.infolist():
    print f.filename, f.file_size
    if f.filename == 'README':
        print(rf.read(f))
Получаю
AttributeError: 'module' object has no attribute 'RarFile'
Отсюда вопрос может ли кто подсказать как избежать данной ошибки. И что порекомендуете использовать для работы с RAR. Распаковывать архив - не перспективно.

Отредактировано Inok (Дек. 7, 2013 19:02:16)

Офлайн

#2 Дек. 7, 2013 19:14:29

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Python 3. rarfile

Linux, python 2.7.3

import rarfile
rf = rarfile.RarFile('subprocess.rar')
for f in rf.infolist():
    print f.filename, f.file_size
subprocess 3925105

код рабочий, косяк где-то в другом месте



Офлайн

#3 Дек. 7, 2013 19:21:56

Inok
Зарегистрирован: 2013-09-11
Сообщения: 41
Репутация: +  -1  -
Профиль   Отправить e-mail  

Python 3. rarfile


у меня win7, python3. Устанавливал модуль через CMD: python setup.py install
лог установки

C:\Python33\Module\rarfile-2.6>python setup.py install
running install
running build
running build_py
running install_lib
running install_egg_info
Removing C:\Python33\Lib\site-packages\rarfile-2.6-py3.3.egg-info
Writing C:\Python33\Lib\site-packages\rarfile-2.6-py3.3.egg-info
День убил, разобраться не могу…

Отредактировано Inok (Дек. 7, 2013 19:22:08)

Офлайн

#4 Дек. 7, 2013 19:29:12

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Python 3. rarfile

Я поставил через pip



Офлайн

#5 Дек. 7, 2013 19:30:55

Inok
Зарегистрирован: 2013-09-11
Сообщения: 41
Репутация: +  -1  -
Профиль   Отправить e-mail  

Python 3. rarfile

извиняюсь!! назвал свой модуль именем rarfile!
Прошу простить за беспокойство!

Офлайн

#6 Дек. 7, 2013 19:33:00

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

Python 3. rarfile

Inok
Отсюда вопрос может ли кто подсказать как избежать данной ошибки
Пользоваться атрибутами, которые есть у объекта.

А вообще там такой атрибут есть.



Офлайн

#7 Дек. 8, 2013 17:42:17

Inok
Зарегистрирован: 2013-09-11
Сообщения: 41
Репутация: +  -1  -
Профиль   Отправить e-mail  

Python 3. rarfile

Еще раз день добрый. продолжаю изучать данный модуль и встретил данную ошибку
код

import rarfile
with rarfile.RarFile('0e61058f7dd1b101684dab66742885b3.rar') as rf:
    with rf.open('0e61058f7dd1b101684dab66742885b3') as f:
        for ln in f:
            print(ln.strip())

сообщение
> "Python " temp.py
Traceback (most recent call last):
  File "temp.py", line 9, in <module>
    with rarfile.RarFile('0e61058f7dd1b101684dab66742885b3.rar') as rf:
  File "C:\Python33\lib\site-packages\rarfile.py", line 493, in __init__
    self._parse()
  File "C:\Python33\lib\site-packages\rarfile.py", line 734, in _parse
    self._parse_real()
  File "C:\Python33\lib\site-packages\rarfile.py", line 745, in _parse_real
    raise NotRarFile("Not a Rar archive: "+self.rarfile)
rarfile.NotRarFile: Not a Rar archive: 0e61058f7dd1b101684dab66742885b3.rar

файл архива для примера прикрепил

Прикреплённый файлы:
attachment fc0d249d90a6043a9022c97a75e47c09.rar (878 байт)

Офлайн

#8 Дек. 8, 2013 18:11:19

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

Python 3. rarfile

Inok
Он же тебе уже почти по-русски написал - это не rar архив

Можешь убедиться сам, открыв через rar-архиватор



Отредактировано Budulianin (Дек. 8, 2013 18:12:08)

Офлайн

#9 Дек. 8, 2013 18:28:27

Inok
Зарегистрирован: 2013-09-11
Сообщения: 41
Репутация: +  -1  -
Профиль   Отправить e-mail  

Python 3. rarfile

как восклицает один мой знакомый: “ДА как, так то!”. У меня rar открывает и предлагает его распаковать! Видимо не хватает обязательных реквизитов для модуля… cmd приди на помощь.
Кто подскажет как можно работать с такими! архивами буду благодарен!

Офлайн

#10 Дек. 8, 2013 18:51:47

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Python 3. rarfile

Может быть я скажу какую то глупость, но WinRar (а Вы открываете файл в винде наверняка им) помимо собственно .rar архивов читает еще кучу форматов и вовсе не факт, что Ваш файл имеющий расширение rar и есть архив rar, вполне может быть это zip или tar.
Посмотрите хексом первые байты архива, что там?
Первые четыре байта rar архива = “Rar!”



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version