К книге
Приложение к «Python в библиотеке»Arch. 8 Images. del_pic.py
47%
Arch. 8 Images. del_pic.py
16

#!/usr/bin/env python

# -*- coding: utf-8 -*-

# Удаление секций binary из файла xxxx.fb2.zip

import sys, os, io, zipfile

cover = ''

NameFb2 = ''

L=[]

#---------------------------------------------

def Del_Image():

, ,global NameFb2

, ,global L

, ,vi = io.StringIO()

, ,notbinary = True

, ,for i in L:

, , , ,if notbinary:

, , , , , ,if (i.find('<binary')>=0):

, , , , , , , ,if (i.find(cover)>=0):

, , , , , , , , , ,vi.write(i)

, , , , , , , ,else:

, , , , , , , , , ,notbinary = False

, , , , , ,else:

, , , , , , , ,vi.write(i)

, , , ,if i.find('</binary')>=0:

, , , , , ,notbinary = True

, ,w = zipfile.ZipFile('^temp.zip', 'w', zipfile.ZIP_DEFLATED) # Создание нового архива

, ,w.writestr(NameFb2, vi.getvalue()) , ,

, ,w.close()

, ,vi.close()

#----------------------------------------

def o_zip(fn):

, ,global NameFb2

, ,global L

, ,z = zipfile.ZipFile(fn, 'r')

, ,filelist = z.namelist()

, ,for n in filelist:

, , , ,try:

, , , , , ,if n[-4:] == ".fb2":

, , , , , , , ,body = z.open(n)

, , , , , , , ,NameFb2 = n

, , , , , , , ,for line in body:

, , , , , , , , , ,L.append(str(line, 'UTF-8'))

, , , , , , , ,return True

, , , ,except:

, , , , , ,print( "error:", n )

, , , , , ,return False

#-------------------- main ------------------------

print('Удаление секций binary из файла xxxx.fb2.zip')

FileName = input('Введите имя файла:')

if FileName == '':

, , exit()

e = input('Удалить обложку? [y/n]')

if e == 'y':

, , cover = 'not'

else:

, , cover = 'cover.'

if os.path.isfile(FileName):

, ,if o_zip(FileName):

, , , ,Del_Image()

, , , ,os.remove(FileName)

, , , ,os.rename('^temp.zip', FileName)

, , , ,print("Done.")

, ,else:

, , , ,print("???")

else:

, ,print("File doesn't exists!")

Предыдущая главаГлава 16 из 34Следующая глава