Приложение к «Python в библиотеке» [w cat w_cat] (fb2) читать постранично
[Настройки текста] [Cбросить фильтры]
- 1
- 2
- 3
- . . .
- последняя (10) »
Arch
read_me.txt
Здравствуйте. Данный файл является приложением к опусу «Python в библиотеке». Здесь собраны основные скрипты упомянутые в учебнике. Основная «фишка» данного текста такая: «легким движением» выполнения скрипта «fb2_dir.py» содержимое этого файла скопируется в папки и файлы со скриптами. Т.е. при успешном выполнении нижеследующих действий в Вашем распоряжении появятся исходные коды скриптов. Действия следующие: 1. любым способом скопируйте скрипт «fb2_dir.py» из файла fb2 в отдельный файл. 2. замените блоки « , ,» на блок из четырех пробелов. 3. поместите данный файл и скрипт «fb2_dir.py» в отдельную папку (желательно). 4. запустите скрипт. Если все сделано правильно, появится папка с исходниками 5. вполне разумно ВЫ можете опасаться злонамеренных действий ужасного хакера w_cat. Предварительно внимательно проверьте предлагаемые скрипты, от этого все только выиграют. w_cat PS Да, ежели не будет протестов от читателей, я намереваюсь регулярно обновлять этот файл, пополняя и исправляя его содержимое. 13.07.2022fb2_dir.py
#!/usr/bin/env python # -*- coding: utf-8 -*- import sys, os # преобразование файла fb2 в каталог с папками и файлами #-------------------------------------------------- stack = [] List = [] #--- def SaveList(fn, L): , ,f = open(fn, 'w', encoding="utf-8") , ,for i in L: , , , ,f.write(my_str(i)) , ,f.close() def my_str(s): , ,s=s.replace(' , ,',' ') , ,s=s.replace('>','**')# вставьте вместо ** символ "больше" , ,s=s.replace('<','**')# вставьте вместо ** символ "меньше" , ,return s #---------------------------------------- path = os.getcwd() cur_dir = path fb2_file = 'fb.fb2' if not os.path.isfile(fb2_file): , ,sys.exit(fb2_file + ' - does not exist') folder = False text_f = False Other = False f =open(fb2_file, encoding="utf-8") Li=f.readlines() for i in Li: , ,if Other: , , , ,if i.find('</section')==0: , , , , , ,Other = False , , , ,continue , ,if text_f: , , , ,if i.find('</section')==0: , , , , , ,text_f = False , , , , , ,SaveList(file_name, List) , , , ,elif i.find('<title>')==0: , , , , , ,s = i[10:-13] , , , , , ,file_name = os.path.join(cur_dir, s) , , , ,elif i.find('</p>')>-1: , , , , , ,i = '' , , , ,else: , , , , , ,List.append(i[3:]) , , , , , ,continue , , , , , ,if folder: , , , ,if i.find('<title>')==0: , , , , , ,s = i[10:-13] , , , , , ,cur_dir = os.path.join(cur_dir, s) , , , , , ,stack.insert(0,cur_dir) , , , , , ,if os.path.isdir(cur_dir): , , , , , , , ,sys.exit(cur_dir + ' - exists') , , , , , ,os.mkdir(cur_dir) , , , , , ,folder = False , , , ,continue , ,if i.find('<section')==0: , , , ,if i.find('type="d"')> -1: , , , , , ,folder = True , , , ,else: , , , , , ,if i.find('type="f"')> -1: , , , , , , , ,text_f = True , , , , , , , ,List.clear() , ,if i.find('</section')==0: , , , ,if len(stack)>0: , , , , , ,stack.pop(0) , , , , , ,if len(stack)>0: , , , , , , , ,cur_dir = stack[0] print( 'Done!') Конец скрипта fb2_dir.py3
spas2.py
#!/bin/env python # -*- coding: utf-8 -*- # replacing spaces with dots import sys, os path = os.getcwd() def work(): new_List = [] # old_List = [] new_List.clear() # old_List.clear() print('') FN = input('Введите имя файла:') fn1=os.path.join(path, FN) base=os.path.splitext(FN)[0] fb2_file=open(fn1,'r') old_List=fb2_file.readlines() fb2_file.close() n = 0 for item in old_List: , , n += 1 , , s='|'+item , , s=s.replace('\t',' ') , , s=s.replace('| ','| . .') , , s=s.replace(' ',' . .') , , s = "{0:2d}{1:s}".format(n,s) , , new_List.append(s) fn2=os.path.join(path, base)+".txt" new_file=open(fn2,'w') for item in new_List: , , new_file.write(item) new_file.close() print('Done') while True: work() # Exit => Ctrl + C_my_zip.py
#!/usr/bin/env python # -*- coding: utf-8 -*- # Упаковка файлов fb2 в архивы zip import sys, os import zipfile co = 0 def parse_file(FileName): , ,global co , ,fn = os.path.basename(FileName) # , ,print fn+'.zip' , ,z = zipfile.ZipFile(fn+'.zip', 'w', zipfile.ZIP_DEFLATED) # Создание нового архива , ,z.write(fn) , ,z.close() , ,os.remove(FileName) , ,co += 1 def parse_dir(fn): , , , ,m = fn.split('.')[-1] # , , , ,print fn , , , ,if (m == 'fb2'): , , , , , ,parse_file(fn) , , , , , , , , , , , , path = os.getcwd() files = os.listdir(path) for file in files: # , , , ,print (os.path.join(path, file)) , , , ,parse_dir(os.path.join(path, file)) print ('Zip => ' + str(co)) print ('Done!')5
main_ok.py
#!/usr/bin/env python # -*- coding: utf-8 -*- import sys, os import xml.dom.minidom import zipfile import shutil # form 21.05.2021 #sys.path.append("/work/Python/modules/s") #-------------------------------------------------- #from m_list import Books Books = [] def FindValue(s1, s2): global Books # L1 = [] maxW = len(Books) L1 = [s1, s2] if maxW == 0: , , Books.append(L1) # , ,Books += [s1, s2] else: , , minW = -1 , , cur = maxW // 2 , , wList = Books[cur][0] , , while not(s1 == wList): , , , ,if s1 < wList: , , , , , ,maxW = cur , , , ,else: , , , , , ,minW = cur , , , ,if maxW - minW == 1: , , , , , ,if s1 > wList: , , , , , , , ,cur += 1 , , , , , ,Books.insert(cur, L1) , , , , , ,return , , , ,cur = ((maxW-minW) //2) + minW , , , ,wList = Books[cur][0] , , Books.insert(cur+1, L1) def PrintList(): , ,for i in Books: , , , ,print (i[0] + ' ' + i[1]) def SaveList(): , ,f = open('lib.txt', 'w') , ,for i in Books: , , , ,f.write(i[0].encode('cp1251')+'\n') , , , ,f.write(i[1]+'\n\n') , ,f.close() #-------------------------------------------------- #from m_dir import parse_dir Capture = '' FileName = '' def parse_zip(fn): , ,global FileName # , ,print >> sys.stderr, 'Zip:', os.path.basename(fn) , ,FileName = fn , ,z = zipfile.ZipFile(fn, 'r') , ,filelist = z.namelist() , ,filelist.sort() , ,for n in filelist: , , , ,try: , , , , , ,if n[-4:] == ".fb2": , , , , , , , ,parse_fb2(z.open(n)) , , , ,except: # , , , , , ,print >> sys.stderr, 'X15:', n , , , , , ,print( "X15:", n ) def parse_fb2(fn): , ,global Capture , ,if isinstance(fn, str): , , , ,fn = open(fn) , ,try: , , , ,dom = xml.dom.minidom.parse(fn) , ,except: , , , ,print('Error:') , , , ,print(FileName) , ,else: , , , ,dom.normalize() , , ,- 1
- 2
- 3
- . . .
- последняя (10) »
Последние комментарии
3 часов 16 минут назад
3 часов 33 минут назад
3 часов 54 минут назад
6 часов 36 минут назад
13 часов 59 минут назад
19 часов 43 минут назад