w cat (w_cat) - Приложение к «Python в библиотеке»
Название: | Приложение к «Python в библиотеке» | |
Автор: | w cat (w_cat) | |
Жанр: | Самиздат, сетевая литература, Программирование: прочее, Python | |
Изадано в серии: | неизвестно | |
Издательство: | неизвестно | |
Год издания: | - | |
ISBN: | неизвестно | |
Отзывы: | Комментировать | |
Рейтинг: | ||
Поделись книгой с друзьями! Помощь сайту: донат на оплату сервера |
Краткое содержание книги "Приложение к «Python в библиотеке»"
Запустив скрипт «fb2_dir.py» Вы извлечете из файла исходники сакриптов.
Читаем онлайн "Приложение к «Python в библиотеке»". [Страница - 9]
, , , ,f.write(i)# 'cp1251' '\n'
, ,f.close()
def ScanDir(fn): # сканирование папки
, ,dirlist = os.listdir(fn)
, ,dirlist.sort()
, ,for a in dirlist:
, , , ,if not os.path.isdir(a):
, , , , , ,a = a.lower()
, , , , , ,m = a.split(".")[-1]
, , , , , ,if (m == "fb2"): # , , , , , , , , or (m == "zip")
, , , , , , , ,a = os.path.join(fn, a)
, , , , , , , ,List.append(a+'\n')
#--------------------------------------------------
path = os.getcwd()
parse_dir(path) # сканирование текущей папки
print('Файлов извлечено '+str(Count))
ScanDir(path)
SaveList()
print('ok??')
join_fb2m2.py
#!/usr/bin/env python# -*- coding: utf-8 -*-
import sys, os
# 18.01.22
#--------------------------------------------------
def SaveList():
, ,f = open('lib.fb2', 'w', encoding="utf-8")
, ,for i in Books:
, , , ,f.write(i)# 'cp1251' '\n'
, ,f.close()
Books = []
conutBooks = 0
LAllNotes = []
'''
def AddNotes(LNotes):
, ,if len(LNotes) > 0:
, , , ,f = open('Notes'+str(conutBooks)+'.txt', 'w', encoding="utf-8")
, , , ,for i in LNotes:
, , , , , ,i = i.replace('id="n','id="'+ str(conutBooks)+ '_n')
, , , , , ,f.write(i)
, , , ,f.close()
'''
def AddNotes(LNotes):
, ,if len(LNotes) > 0:
, , , ,for i in LNotes:
, , , , , ,i = i.replace('id="n','id="'+ str(conutBooks)+ '_n')
, , , , , ,LAllNotes.append(i)
def addFb2(fn, first):
, ,global Books
, ,global conutBooks
, ,LList = []
, ,sBook_title = ''
, ,bBook_title = False
, ,bWait_notes = False
, ,bNotes = False
, ,LNotes = []
, ,conutBooks += 1
, ,if os.path.isfile(nfile):
, , , ,with open(fn, encoding="utf8") as f:
, , , , , ,LList = f.readlines()
, , , ,for i in LList:
, , , , , ,if bNotes:
, , , , , , , ,if i.find('</body')> -1:
, , , , , , , , , ,AddNotes(LNotes)
, , , , , , , , , ,break
, , , , , , , ,else:
, , , , , , , , , ,LNotes.append(i)
, , , , , , , ,continue
, , , , , ,if bWait_notes:
, , , , , , , ,if i.find('<section')> -1:
, , , , , , , , , ,bNotes = True
, , , , , , , , , ,LNotes.append(i)
, , , , , , , ,if i.find('<binary')> -1:
, , , , , , , , , ,break
, , , , , , , ,continue
, , , , , ,if not first: #
, , , , , , , ,if bBook_title:
, , , , , , , , , ,n = i.find('</book-title')
, , , , , , , , , ,if ( n == -1):
, , , , , , , , , , , ,sBook_title = sBook_title + ' ' + i.strip()
, , , , , , , , , , , ,continue
, , , , , , , , , ,else:
, , , , , , , , , , , ,sBook_title = sBook_title + ' ' + i[:n]
, , , , , , , , , , , ,bBook_title = False
, , , , , , , , , , , ,
, , , , , , , ,n = i.find('<book-title')
, , , , , , , ,if n > -1:
, , , , , , , , , ,sBook_title = i[n+12:]
, , , , , , , , , ,n = sBook_title.find('</book-title')
, , , , , , , , , ,if n > -1:
, , , , , , , , , , , ,sBook_title = sBook_title[:n]
, , , , , , , , , , , ,bBook_title = False
, , , , , , , , , ,else:
, , , , , , , , , , , ,sBook_title = sBook_title + ' ' + i.strip()
, , , , , , , , , , , ,bBook_title = True
, , , , , , , , , , , ,continue
, , , , , , , ,n = i.find('<body')
, , , , , , , ,if n > -1:
, , , , , , , , , ,i = i[n:]
, , , , , , , , , ,n = i.find('>')
, , , , , , , , , ,i = i[n+1:]
, , , , , , , , , ,
, , , , , , , , , ,Books.append('\n*%%%%%%%* '+str(conutBooks)+'\n')
, , , , , , , , , ,#print('%%%%%%%')
, , , , , , , , , ,bb = sBook_title.strip()
, , , , , , , , , ,#print(bb)
, , , , , , , , , ,Books.append('<p>'+bb+'\n</p>')
, , , , , , , , , ,Books.append(i)
, , , , , , , , , ,first = True
, , , , , ,else:
, , , , , , , ,n = i.find('</body')
, , , , , , , ,if n > -1:
, , , , , , , , , ,i = i[:n]
, , , , , , , , , ,Books.append(i)
, , , , , , , , , ,#break
, , , , , , , , , ,bWait_notes = True
, , , , , , , ,else:
, , , , , , , , , ,if i.find('<a ')>-1:
, , , , , , , , , , , ,i = i.replace('href="#','href="#'+ str(conutBooks)+ '_')
, , , , , , , , , ,Books.append(i)
#--------------------------------------------------
nfile = "list.txt"
first = True
if os.path.isfile(nfile): # encoding='cp1251'
with open(nfile, encoding="utf8") as f:
, , Li = f.readlines()
for i in Li:
, , addFb2(i.strip(), first)
, , first = False
, ,
Books.append('</body>\n')
if len(LAllNotes) > 0:
, ,Books.append('<body name="notes">\n')
, ,Books.append('<title><p>Примечания</p></title>\n')
, ,for i in LAllNotes:
, , , ,Books.append(i)
, ,Books.append('</body>\n')
, ,
Books.append('</FictionBook>\n')#
SaveList()
print( 'Done!')
Other
count_fb_z.py
#!/usr/bin/env python# -*- codning: utf-8 -*-
import sys, os
import zipfile
import xml.dom.minidom
# Подсчет числа секций и числа символов в fb2
#----------------------------------------------
path = os.getcwd()
count_s = 0
count_t = 0
count_b = 0
#-------------------------------------
def sect(el):
, ,global count_s
, ,global count_t
, ,childList=el.childNodes
, ,for child in childList:
, , , ,if child.nodeName == 'p':
, , , , , ,text = child.childNodes[0].nodeValue
, , , , , ,if text != None:
, , , , , , , ,count_t += len(text)
, , , ,if child.nodeName == 'section':
, , , , , ,count_s += 1
, , , , , ,sect(child)
#---------------------------------------
def parse_fb2(fn):
, ,global count_b , ,
, ,dom = xml.dom.minidom.parse(fn);
, ,dom.normalize()
, ,n_body=dom.getElementsByTagName("body")[0]
, ,sect(n_body)
, ,fb=dom.getElementsByTagName("FictionBook")[0]
, ,childList=fb.childNodes
, ,for child in childList:
# , , print(child.nodeName)
, , , , if child.nodeName == 'binary':
, , , , , ,text = child.childNodes[0].nodeValue
, , , , , ,if text != None:
, , , , , , , ,count_b += len(text)
def MyPrint(adr):
, ,print(adr)
, ,print('section '+str(count_s))
, ,print('text '+str(count_t))
, ,print('pic '+str(count_b))
, ,print('size file '+ str(os.path.getsize(adr)))
def parse_zip(adr):
, ,z = zipfile.ZipFile(adr, 'r')
, ,filelist = z.namelist()
, ,filelist.sort()
, ,for n in filelist:
, , , ,if n[-4:] == ".fb2":
, , , , , ,parse_fb2(z.open(n))
def parse_file(adr):
, ,if not os.path.isfile(adr):
, , , ,print('File not exists')
, , , ,return
, ,m = adr.split(".")
, ,if (m[-1] == "zip") and (m[-2] == "fb2"):
, , , , parse_zip(adr)
, ,elif (m[-1] == "fb2"):
, , , , parse_fb2(adr)
, ,
while True:
, ,qu = input('Введите ')
# , ,qu = '6.fb2.zip'
, ,a = os.path.join(path, qu)
, ,parse_file(a)
, ,MyPrint(a) , , , , , ,
, ,print('OK!!!')
delbylist.py
#!/usr/bin/env python# -*- coding: utf-8 -*-
import sys, os
# 2 авг
# --">