К книге
Приложение к «Python в библиотеке»Arch. Other. dir_fb2.py
91%
Arch. Other. dir_fb2.py
31

#!/usr/bin/env python

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

import sys, os

# конвертация папки с файлами в структуру fb2

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

List = []

#---

def SaveList(fn, L):

, ,f = open(fn, 'w', encoding="utf-8")

, ,for i in L:

, , , ,f.write(i)

, ,f.close()

#**************************************************

def my_str(s):

, ,s=s.replace('\t',' , ,')

, ,s=s.replace(' ',' , ,')

, ,s=s.replace('**','>')# вставьте вместо ** символ "больше"

, ,s=s.replace('**','<')# вставьте вместо ** символ "меньше"

# s = s.rstrip

, ,s = '<p>' + s + '</p>\n'

, ,return s

, ,

def parse_file(ph):

, ,global List

, ,si = os.path.getsize(ph)

, ,if si > 0:

, , , ,List.append('<section type="f">\n') , , , ,

, , , ,List.append('<title><p>' + os.path.basename(ph)+ '</p></title>\n')

, , , ,f =open(ph, encoding="utf-8")

, , , ,Li=f.readlines()

, , , ,for i in Li:

, , , , , ,s = my_str(i)

, , , , , ,List.append(s)

, , , ,f.close()

, , , ,List.append('</section>\n')

, ,

def parse_dir(ph):

, ,global List

, ,dirlist = os.listdir(ph)

, ,if len(dirlist) > 0:

, , , ,List.append('<section type="d">\n') , , , ,

, , , ,List.append('<title><p>' + os.path.basename(ph)+ '</p></title>\n')

, , , ,

# , , dirlist.sort()

, , , ,for i in dirlist:

, , , , , ,m = os.path.join(ph, i)

, , , , , ,if os.path.isdir(m):

, , , , , , , ,parse_dir(m)

, , , , , ,else:

, , , , , , , ,parse_file(m)

, , , ,List.append('</section>\n')

def GetHead(myFile):

, ,global List

, ,f =open(myFile, encoding="utf-8")

, ,Li=f.readlines()

, ,for i in Li:

, , , ,List.append(i)

, ,f.close()

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

path = os.getcwd()

folder = 'Arc'

if not os.path.isdir(folder):

, ,sys.exit(folder + ' - does not exist')

myFolder = os.path.join(path, folder)

myFile = os.path.join(myFolder, 'head.txt')

if os.path.isfile(myFile):

, ,GetHead(myFile)

List.append('\n<section type="d">\n')

List.append('<title><p>'+folder)

List.append('</p></title>\n')

myFile = os.path.join(myFolder, 'list.txt')

if os.path.isfile(myFile):

, ,f =open(myFile, encoding="utf-8")

, ,Li=f.readlines()

, ,for i in Li:

, , , ,i = i.strip()

, , , ,if i == '':

, , , , , ,continue

, , , ,m = os.path.join(myFolder, i)

, , , ,if os.path.isdir(m):

, , , , , ,parse_dir(m)

, , , ,else:

, , , , , ,if os.path.isfile(m):

, , , , , , , ,parse_file(m) , , , ,

, ,f.close()

List.append('</section>\n')

List.append('</body>')

List.append('</FictionBook>')

SaveList('fb.fb2', List)

print( 'Done!')

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