Приложение к «Python в библиотеке» - страница 3

стр.

, , , , , , , ,Books.pop(i-1)

, , , , , , else:

, , , , , , , , mPrintList(old_name, L)

, , , , , , , , old_name = Books[i-1][0]

, , , , , , , , flag = 0

, , , , else:

, , , , , , old_name = Books[i-1][0]

, ,

, ,if flag == 1:

, , , ,mPrintList(old_name, L)

, , , ,

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

def mMain():

mySorting()

fbName = "f"

fNum = 1

fName = fbName + str(fNum) #'f1'

num = 0

if len(Books) > 0:

, , if (not os.path.isdir(fName)):

, , , , os.mkdir(fName)

, , for i in Books:

, , , , if (not os.path.isfile(path+"/"+fName)):

, , , , , , shutil.move(i[1], path+"/"+fName)

, , , , num += 1

, , , , if num == 9: # number in folder !!!

, , , , , , fNum += 1

, , , , , , fName = fbName + str(fNum)

, , , , , , if (not os.path.isdir(fName)):

, , , , , , , , os.mkdir(fName)

, , , , , , num = 0

print( 'Done!')

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

parse_dir(path)

if len(Books) == 0:

, ,print('Empty dir')

else:

, ,mMain()

6

fb2err4.py

#!/usr/bin/env python

# -*- codning: utf-8 -*-

import sys, os

# проверка структуры файла fb2

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

file = 'lib.fb2'

#count = 1 # счетчик строк

flag = False # признак анализа тега

S = '' # место для обработанного тега

Tag = '' # место для тега

L = [] # стек

Tagss = []

'''

with open(file, encoding="utf8") as f:

, ,LList = f.readlines()

for i in LList:

, ,count += 1

, ,if i.find('section') > -1:

, , , ,print(count)

, , , ,print(i)

f.close()

'''

def printStack():

, ,st = open("stack.txt", "w")

, ,for n in Tagss:

, , , ,#print(n) # вывод на этран

, , , ,st.write(n+'\n') # или вывод в файл

, ,st.close()

def run_analiz(fn):

, ,count = 1 # счетчик строк

, ,if not os.path.isfile(fn): # проверка существования файла

, , , ,print('"'+fn+'" file does not exist.')

, , , ,return

, ,

, ,global Tagss

, ,f = open(fn, 'rb') #

, ,d = f.read()

, ,for n in d:

, , , ,if n == 10: # символ завершения строки

, , , , , ,count += 1 # + в счетчик строк

, , , ,elif chr(n) == '<': # начало тега

, , , , , ,flag = True

, , , , , ,Tag = '' # подготовка места для тега

, , , ,else:

, , , , , ,if flag: # читаем тег

, , , , , , , ,if chr(n) == '>': # провека на конец тега, если да:

, , , , , , , , , ,S = Tag.split(' ')[0] # отбрасывание возможных параметров

, , , , , , , , , ,flag = False

, , , , , , , , , ,if S[0] == '/': # проверка на закрывающий тег

, , , , , , , , , , , ,Tagss.append(str(count)+' <'+S)

, , , , , , , , , , , ,S = S[1:] # удаление слеша

, , , , , , , , , , , ,Lo = L.pop() # чтение из стека

, , , , , , , , , , , ,if Lo[0] != S: # сообщение об ошибке

, , , , , , , , , , , , , ,printStack() # распечатка стека

, , , , , , , , , , , , , , # ежели такая распечатка не нужна - закомментируйте

, , , , , , , , , , , , , ,print('Teg = "'+Lo[0]+'" begin in str = '+ str(Lo[1]))

, , , , , , , , , , , , , ,print('Не соответствует')

, , , , , , , , , , , , , ,print('Teg ="' +S+ '"end in str = '+ str(count))

, , , , , , , , , , , , , ,f.close()

, , , , , , , , , , , , , ,return

, , , , , , , , , ,else:

, , , , , , , , , , , ,if Tag[-1] != '/': # обработка одинарных тегов

, , , , , , , , , , , , , ,T = Tag.split(' ')

, , , , , , , , , , , , , ,Tagss.append(str(count)+' <'+T[0])

, , , , , , , , , , , , , ,Lo = [S, count] # подготовка для записи в стек

, , , , , , , , , , , , , ,L.append(Lo) # запись в стек

, , , , , , , ,else:

, , , , , , , , , ,Tag = Tag + chr(n) # добавление символа к тегу

, ,f.close()

, ,print('OK!!!') # сообщение об удачной проверке.

while True: # бесконечный цикл проверок

FN = input('Введите имя файла: ['+file+']')

if FN == '': # если сразу нажат "Enter"

, , run_analiz(file) # повторяем проверку файла

else:

, , file = FN # запоминаем новое имя

, , run_analiz(file) # проверяем новый файл

fb2errors.py

#!/usr/bin/env python

# -*- codning: utf-8 -*-

import sys, os

import zipfile

# создание списка файлов fb2 с повреждением структуры

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