🔍 Как удалить файл из архива python: простой способ и инструкция
Чтобы удалить файл из архива в Python, вам нужно использовать модуль zipfile. Вот пример кода:
import zipfile
import os
# Открываем архивный файл
with zipfile.ZipFile('file.zip', 'r') as zip_ref:
# Удаляем файл из архива
zip_ref.extractall('temp_folder')
os.remove('temp_folder/file_name.txt')
# Перезаписываем архив без удаленного файла
zip_ref.close()
Детальный ответ
Как удалить файл из архива Python
Удаление файла из архива в Python может быть выполнено с использованием модуля zipfile. Модуль zipfile предоставляет удобные функции для работы с архивами в формате ZIP. Чтобы удалить файл из архива, вам понадобится следующий код:
import zipfile
import os
def удалить_файл_из_архива(архив, файл):
# Открываем архив для чтения
with zipfile.ZipFile(архив, 'r') as архив_зип:
# Создаем новый архив для записи
with zipfile.ZipFile('новый_архив.zip', 'w') as новый_архив_зип:
# Копируем файлы из старого архива в новый, за исключением удаляемого файла
for файл_в_архиве in архив_зип.namelist():
if файл_в_архиве != файл:
данные = архив_зип.read(файл_в_архиве)
новый_архив_зип.writestr(файл_в_архиве, данные)
# Заменяем старый архив новым
os.replace('новый_архив.zip', архив)
print(f'Файл {файл} успешно удален из архива {архив}')
В этом коде мы сначала открываем исходный архив для чтения с помощью функции ZipFile
из модуля zipfile. Затем мы создаем новый архив для записи. Далее мы копируем все файлы из старого архива в новый архив, за исключением удаляемого файла. Это выполняется с помощью цикла, который проходит по всем файлам в старом архиве с помощью метода namelist()
. Если файл не является удаляемым, мы считываем его данные из старого архива и записываем в новый архив с помощью метода writestr()
. После завершения цикла мы заменяем старый архив новым архивом с помощью функции os.replace()
.
Для удаления файла из архива вам нужно вызвать функцию удалить_файл_из_архива
и передать ей имя архива и имя удаляемого файла как аргументы.
удалить_файл_из_архива('архив.zip', 'удаляемый_файл.txt')
Убедитесь, что замените 'архив.zip' и 'удаляемый_файл.txt' на соответствующие имена вашего архива и удаляемого файла.
После выполнения кода, указанный файл будет удален из архива, и вы получите сообщение об успешном удалении.