Найти - Пользователи
Полная версия: Python 3. rarfile
Начало » Python для новичков » Python 3. rarfile
1
Inok
День добрый.
Есть задача, добраться до содержимого в архиве. Архив в формате *.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. Распаковывать архив - не перспективно.
FishHook
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

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

у меня 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
День убил, разобраться не могу…
FishHook
Я поставил через pip
Inok
извиняюсь!! назвал свой модуль именем rarfile!
Прошу простить за беспокойство!

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

А вообще там такой атрибут есть.
Inok
Еще раз день добрый. продолжаю изучать данный модуль и встретил данную ошибку
код
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

файл архива для примера прикрепил
Budulianin
Inok
Он же тебе уже почти по-русски написал - это не rar архив

Можешь убедиться сам, открыв через rar-архиватор
Inok
как восклицает один мой знакомый: “ДА как, так то!”. У меня rar открывает и предлагает его распаковать! Видимо не хватает обязательных реквизитов для модуля… cmd приди на помощь.
Кто подскажет как можно работать с такими! архивами буду благодарен!
FishHook
Может быть я скажу какую то глупость, но WinRar (а Вы открываете файл в винде наверняка им) помимо собственно .rar архивов читает еще кучу форматов и вовсе не факт, что Ваш файл имеющий расширение rar и есть архив rar, вполне может быть это zip или tar.
Посмотрите хексом первые байты архива, что там?
Первые четыре байта rar архива = “Rar!”
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