Я могу разархивировать файл, если файл .zip
, и разархивировать файл, если мой тип файла .rar
. Как я могу сделать эту работу с python 2.7?
Как разархивировать файл с помощью python
Ответы (5)
Поздно, но я не был удовлетворен ни одним из ответов.
pip install patool
import patoolib
patoolib.extract_archive("foo_bar.rar", outdir="path here")
Работает на Windows и Linux без каких-либо дополнительных библиотек.
person
Amir
schedule
03.10.2014
Хорошая библиотека, но очень мало гибкости. Например, он не может перезаписывать файлы GZ. См. этот вопрос для получения более подробной информации: stackoverflow.com/questions/29631793/
- person multigoodverse; 27.04.2015
Я попробовал вышеописанное и получил
patoolib.util.PatoolError: could not find an executable program to extract format rar; candidates are (rar,unrar,7z),
Если я правильно понимаю, мне нужна одна из утилит, что противоречит цели.
- person some user; 11.12.2016
Попробуйте пакет pyunpack
:
from pyunpack import Archive
Archive('a.zip').extractall('/path/to')
person
Irakli Darbuashvili
schedule
12.07.2013
это требует
patool
или некоторые другие?
- person Basj; 31.01.2014
да без него можно распаковать только zip файлы. посмотри в документации pyunpack ссылка которую я дал там все есть
- person Irakli Darbuashvili; 07.02.2014
Хороший пакет для этого rarfile
:
Информация и документы здесь:
https://pypi.python.org/pypi/rarfile/
https://rarfile.readthedocs.io/api.html
person
Romibuzi
schedule
12.07.2013
Если вы решили использовать
rarfile
, у вас могут возникнуть проблемы при попытке извлечь файл. Это связано с тем, что для извлечения используется инструмент UnRaR.exe с веб-сайта winrar (rarlab.com/rar_add.htm< /а>). Прямая ссылка для Windows: rarlab.com/rar/unrarw32.exe. Убедитесь, что у вас есть этот файл. Я положил его в C:\Python27\UnRar.exe
. Отредактируйте файл: C:\Python27\Lib\site-packages\rarfile.py
вот так: UNRAR_TOOL = r"c:\python27\unrar.exe"
Мне помогло.
- person E235; 04.04.2017
Нет, ему нужен
unrar.exe
, которого нет в Linux.
- person Maksym Ganenko; 08.05.2020
@MaksymGanenko: В Linux требуется исполняемый файл
unrar
, который можно установить с помощью диспетчера пакетов. В Debian/Ubuntu это sudo apt install unrar
- person MestreLion; 07.08.2020
для перечисления имен членов архива не требуется
unrar
, однако для извлечения и обновления требуется. Вы также можете иметь программу с открытым исходным кодом unar
вместо unrar
в качестве резервной копии.
- person giuliano-oliveira; 26.10.2020
Для Windows это сработало идеально для меня, но другие пакеты, представленные в другом ответе, не сработали.
- person Maryam Bahrami; 28.04.2021
После некоторого глубокого погружения вот мои выводы:
- RAR не является свободным открытым форматом и принадлежит RARLabs. Вы должны сначала установить их DLL или exe для работы с RAR. Некоторые программы, такие как 7zip, могут уже включать это в себя.
patool
— это приложение, предоставляющее единую командную строку в качестве оболочки для других внешних приложений сжатия. Изначально он может работать только с TAR, ZIP, BZIP2 и GZIP без внешней поддержки.pyunpack
— это библиотека Python, которая изначально может работать только с zip, но предоставляет интерфейс дляpatool
.
Имея это в виду, мне помогли следующие вещи:
- Убедитесь, что 7zip установлен
pip install patool pyunpack
Затем, чтобы использовать его,
import pyunpack
pyunpack.Archive(archive_file).extractall(extract_dir)
person
Shital Shah
schedule
27.06.2020
person
Roman Pekar
schedule
12.07.2013
нужно ли устанавливать
unrar.exe
?
- person Basj; 31.01.2014
Да, согласно документам, он должен найти unrar.exe.
- person DirkR; 18.07.2014
относительно rarfile.readthedocs.org/en/latest/api.html вам нужно указать точный путь для распаковки в скрипте: - rarfile.UNRAR_TOOL = rc:\python27\unrar.exe
- person sohom; 10.12.2015
unrar.exe, серьезно?
- person Maksym Ganenko; 08.05.2020