Приложение к «Python в библиотеке» - W Cat

Приложение к «Python в библиотеке»

Запустив скрипт «fb2_dir.py» Вы извлечете из файла исходники сакриптов.

Читать Приложение к «Python в библиотеке» (Cat) полностью

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.2022

fb2_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('

, , , , , ,Other = False

, , , ,continue

, ,if text_f:

, , , ,if i.find('

, , , , , ,text_f = False

, , , , , ,SaveList(file_name, List)

, , , ,elif i.find('')==0: </p><p> , , , , , ,s = i[10:-13] </p><p> , , , , , ,file_name = os.path.join(cur_dir, s) </p><p> , , , ,elif i.find('</p>')>-1: </p><p> , , , , , ,i = '' </p><p> , , , ,else: </p><p> , , , , , ,List.append(i[3:]) , , </p><p> , , , ,continue </p><p> , , , , </p><p> , ,if folder: </p><p> , , , ,if i.find('<title>')==0: </p><p> , , , , , ,s = i[10:-13] </p><p> , , , , , ,cur_dir = os.path.join(cur_dir, s) </p><p> , , , , , ,stack.insert(0,cur_dir) </p><p> , , , , , ,if os.path.isdir(cur_dir): </p><p> , , , , , , , ,sys.exit(cur_dir + ' - exists') </p></div></div> </div> </div> <!-- Yandex.RTB R-A-5620643-3 --> <div id="yandex_rtb_R-A-5620643-3" class="rkl"><div class="rasporka"></div></div> <script> window.yaContextCb.push(()=>{ Ya.Context.AdvManager.render({ "blockId": "R-A-5620643-3", "renderTo": "yandex_rtb_R-A-5620643-3" }) }) </script> <div class="text-center mt-standard"> <a class="btn" href="/read_200379_2" > Следующая страница </a> </div> <hr class="w-100"> </div> </div> <div class="sect sect-bg"> <div class="sect-header sect-title">Подобные книги</div> <div class="sect-content"> <div class="d-grid"> <a class="poster-item grid-item" href="/show_123565"> <div class="poster-item__img img-fit img-resp-vert"> <img class="lazyload" alt="S. D. F. - W Cat" width="200" height="300" data-src="/uploads/books/images/99/99576260b2444b0daa25ef8fdd35654af8864fe3.jpg" > <i class="lazyload-spinner"></i> </div> <div class="poster-item__desc"> <div class="poster-item__title">S. D. F.</div> <div class="poster-item__meta"></div> </div> </a> <a class="poster-item grid-item" href="/show_185135"> <div class="poster-item__img img-fit img-resp-vert"> <img class="lazyload" alt="Система Диофанта 2 - W Cat" width="200" height="300" data-src="/build/no_cover.39d349f3.jpg" > <i class="lazyload-spinner"></i> </div> <div class="poster-item__desc"> <div class="poster-item__title">Система Диофанта 2</div> <div class="poster-item__meta"></div> </div> </a> <a class="poster-item grid-item" href="/show_198093"> <div class="poster-item__img img-fit img-resp-vert"> <img class="lazyload" alt="Читай Миксата - W Cat" width="200" height="300" data-src="/build/no_cover.39d349f3.jpg" > <i class="lazyload-spinner"></i> </div> <div class="poster-item__desc"> <div class="poster-item__title">Читай Миксата</div> <div class="poster-item__meta"></div> </div> </a> <a class="poster-item grid-item" href="/show_53315"> <div class="poster-item__img img-fit img-resp-vert"> <img class="lazyload" alt="Руководство администратора баз данных Informix. - Виктор Кустов" width="200" height="300" data-src="/build/no_cover.39d349f3.jpg" > <i class="lazyload-spinner"></i> </div> <div class="poster-item__desc"> <div class="poster-item__title">Руководство администратора баз данных Informix.</div> <div class="poster-item__meta"></div> </div> </a> <a class="poster-item grid-item" href="/show_71266"> <div class="poster-item__img img-fit img-resp-vert"> <img class="lazyload" alt="Моделирование бизнес-процессов с BPwin 4.0 - Сергей Владимирович Маклаков" width="200" height="300" data-src="/uploads/books/images/c7/c70586a8792cad8ca1a277b5446f8c458ad54a01.jpg" > <i class="lazyload-spinner"></i> </div> <div class="poster-item__desc"> <div class="poster-item__title">Моделирование бизнес-процессов с BPwin 4.0</div> <div class="poster-item__meta"></div> </div> </a> <a class="poster-item grid-item" href="/show_71474"> <div class="poster-item__img img-fit img-resp-vert"> <img class="lazyload" alt="BPwin и Erwin. CASE-средства для разработки информационных систем - Сергей Владимирович Маклаков" width="200" height="300" data-src="/uploads/books/images/26/261633881829d1f3679f865ac341da1aa16593b7.jpg" > <i class="lazyload-spinner"></i> </div> <div class="poster-item__desc"> <div class="poster-item__title">BPwin и Erwin. CASE-средства для разработки информационных систем</div> <div class="poster-item__meta"></div> </div> </a> <a class="poster-item grid-item" href="/show_192008"> <div class="poster-item__img img-fit img-resp-vert"> <img class="lazyload" alt="Она позади тебя - Боб Пейп" width="200" height="300" data-src="/uploads/books/images/ff/ff9843f9de19122cb159dd278bf8d2b0b5530de5.jpg" > <i class="lazyload-spinner"></i> </div> <div class="poster-item__desc"> <div class="poster-item__title">Она позади тебя</div> <div class="poster-item__meta"></div> </div> </a> <a class="poster-item grid-item" href="/show_100190"> <div class="poster-item__img img-fit img-resp-vert"> <img class="lazyload" alt="В Греции всё есть - Олег Валериевич Пелипейченко" width="200" height="300" data-src="/uploads/books/images/74/74d1b382a99c08b41ad876711edf7ec5c2fb5f07.jpg" > <i class="lazyload-spinner"></i> </div> <div class="poster-item__desc"> <div class="poster-item__title">В Греции всё есть</div> <div class="poster-item__meta"></div> </div> </a> <a class="poster-item grid-item" href="/show_100191"> <div class="poster-item__img img-fit img-resp-vert"> <img class="lazyload" alt="Возвышение империи - Сэм Барон" width="200" height="300" data-src="/uploads/books/images/84/842cdda549bd51d9cc14277fafcdc4af0f5840f0.jpg" > <i class="lazyload-spinner"></i> </div> <div class="poster-item__desc"> <div class="poster-item__title">Возвышение империи</div> <div class="poster-item__meta"></div> </div> </a> <a class="poster-item grid-item" href="/show_152040"> <div class="poster-item__img img-fit img-resp-vert"> <img class="lazyload" alt="Переговорщик - Андрей Владимирович Загорцев" width="200" height="300" data-src="/uploads/books/images/1a/1a2292efde1771e7538d13e9bddaa2184d2b1647.jpg" > <i class="lazyload-spinner"></i> </div> <div class="poster-item__desc"> <div class="poster-item__title">Переговорщик</div> <div class="poster-item__meta"></div> </div> </a> <a class="poster-item grid-item" href="/show_152041"> <div class="poster-item__img img-fit img-resp-vert"> <img class="lazyload" alt="Пирожки для принца - Матильда Старр" width="200" height="300" data-src="/uploads/books/images/c7/c793fb185d83cc8b13d445bf91cb7f9074e1185b.jpg" > <i class="lazyload-spinner"></i> </div> <div class="poster-item__desc"> <div class="poster-item__title">Пирожки для принца</div> <div class="poster-item__meta"></div> </div> </a> </div> </div> </div> </article> </div> </div> </div> </div> </main> </div> </div> <footer class="footer fx-row fx-middle"> <ul class="footer-menu fx-row fx-end fx-1"> <li>Для связи и правообладателям: <a href="mailto:libs.pbn@gmail.com">libs.pbn@gmail.com</a></li> </ul> </footer> </div> </div> <script src="/build/runtime.5332280c.js" defer></script><script src="/build/site.a0b75d60.js" defer></script> <!-- Yandex.Metrika counter --> <script type="text/javascript" > (function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)}; m[i].l=1*new Date(); for (var j = 0; j < document.scripts.length; j++) {if (document.scripts[j].src === r) { return; }} k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)}) (window, document, "script", "https://cdn.jsdelivr.net/npm/yandex-metrica-watch/tag.js", "ym"); ym(94889703, "init", { clickmap:true, trackLinks:true, accurateTrackBounce:true }); </script> <noscript><div><img src="https://mc.yandex.ru/watch/94889703" style="position:absolute; left:-9999px;" alt="" /></div></noscript> <!-- /Yandex.Metrika counter --> </body> </html>