DB prog-story - 27.01.2021-06:38 ...
#1 ...
#2 ...
#3 ...
#4 ...
#5 ...
#6 ...
#7
#| #1 #2 #3 #4 #5 #6 #7
import f # standardní funkce (prog-story 5989),
# Python 3.9.1, autor: Vlastimil Čevela, 25.1.2021
#1 datetime
# DaT = ""
# f.datetime(DaT) ........ vrátí aktuální datum a čas (dd.mm.rrrr-hh:mm)
#2 editace
# C = 0/"", max 9999
# Str = ""
# Del = 0, max 60
# f.eeee(C) ........ editace čísla do fix formátu, vrátí řetězec " .. CCCC"
# f.fix_str_b(Str,Del) ... k řetězci Str doplní mezery do délky Del
# f.fix_str_p(Str,Del) ... k řetězci Str doplní tečky do délky Del
#3 listing (zápisy formou transakce)
# L = [datetime, listing.txt, archiv.txt, Tra, Lim]
# Tra = 1 .... trasování pomocí f.lst(L,F,Text)
# Lim = Int .. limit vstupních dat pro ukončení čtení
# F = "" ... název funkce pro trasování
# f.lst_empty(L,New) ...... úvodní řádek, (if New = 0 open "a", else "w")
# f.lst(L,F,Text) ......... běžný řádek (if Tra = 1 or Text = "*text")
# f.lst_alw(L,F,Text) ..... řádek vypíše vždy
# f.lst_datetime(L) ....... do L[0] vloží aktuální datum a čas
# f.lst_sez(L,Sez) ........ seznam po řádcích
# f.lst_sez_alw(L,Sez) .... seznam vypisuje vždy
# f.lst_sez_poz(L,Sez) .... seznam vč. pozic
#4 seznamy
# Sez = []
# Pol = ""/0
# InpF = ""
# OutF = ""
# X = []
# Y = []
# Sez2 = [X,Y]
# App = 0/jinak ... zápis na pokračování ne/ano
# Sez.append(Pol) ......... Py - přidá položku do seznamu
# Sez.index(Pol) .......... Py - vrací pozici položky v seznamu / ValueError
# f.sez_app_f(Sez,InpF) ... přidá do seznamu řádky textového souboru InpF
# f.sez2_app_f(Sez2,InpF) . přidá do X a Y řádky textového souboru InpF
# f.sez_ass(Sez2,Pol) ..... k položce v seznamu X vrátí odpovídající dle Y
# f.sez_new(Sez,Pol) ...... přidá do seznamu položku, pokud tam nebyla
# f.sez_out_f(Sez,OutF,App) ... vypíše seznam do souboru
# f.sez_poz(Sez,Pol) ...... vrátí pozici položky v seznamu / "*"
# f.sez_str(Sez) .......... vrátí celý seznam jako "str"
# f.sez_sort(Sez) ......... setřídí seznam dle češtiny UTF-8
#5 skládání a spuštění skriptu
# FcePar ... parametry výstupních sestav (#0, ... dle Par v rámci J = [])
# FceInp ... procedury vstupů (#0, ... dle přiřazení *Inp ve FcePar)
# FceOut ... procedury (#0, ... dle přiřazení *Out ve FcePar)
# w ........ výsledný skript, sestavený z vybraných 3 komponent
# f.ini_py(L) .................... vytvoří pracovní w_job.py
# f.create_py(L,Job,Par) ......... postupně vybere komponenty wX.py
# read_py(L,W,FilX,KodX,Out) ... detail čtení a výběru komponenty
# f.end_py(L) .................... ohlásí ukončení skládání
# f.run_py(L,Par) ................ spustí pracovní skript w_job.py
#6 textové soubory
# InpF, OutF ...... jména souborů
# Text = "" ....... zapisovaný text
# App = 0/jinak ... zápis na pokračování ne/ano
# f.copy(L,InpF,OutF,App) ........ kopírování I>O, vypíše počet ř.
# f.write_trans(OutF,Text,App) ... zápis Textu jako transakce
#7 změna skladby řádku
# Radek = "" ..... posloupnost "textX;"
# Inp = [] ....... shodná posloupnost "jméno-textuX"
# Out = [] ....... nová posloupnost "jméno-textuX"
# f.corr(Radek,Inp,Out) ... vrací řádek dle seznamu Out
... #1
## ------------------------------------------------------------------------------
DaT = ""
def datetime(DaT):
import datetime
x = datetime.datetime.now()
DaT = x.strftime("%d")+"."+x.strftime("%m")+"."+x.strftime("%Y")+"-"+x.strftime("%H")+":"+x.strftime("%M")
return DaT
... #2
## ------------------------------------------------------------------------------
Cis = ""
def eeee(Cis):
if len(Cis) < 2:
Cis = "..... "+Cis
elif len(Cis) < 3:
Cis = ".... "+Cis
elif len(Cis) < 4:
Cis = "... "+Cis
else:
Cis = ".. "+Cis
return Cis
Str = ""
Del = 0
def fix_str_b(Str,Del):
#0....*....1....*....2....*....3....*....4....*....5....*....6
Mez = " "
Pom = Str[0:len(Str)]+Mez[0:(Del-len(Str))]
return Pom
def fix_str_p(Str,Del):
#0....*....1....*....2....*....3....*....4....*....5....*....6
Tec = " ............................................................"
Pom = Str[0:len(Str)]+Tec[0:(Del-len(Str))]
return Pom
... #3
## ------------------------------------------------------------------------------
New = 0
def lst_empty(L,New):
F = "lst_empty"
if New == 1:
OutSb = str(L[1])
Out = open(OutSb, "w")
Out.close()
lst(L,F," ")
L = []
F = ""
Text = ""
def lst(L,F,Text):
OutSb = str(L[1])
if L[3] == 1 or Text[0:1] == "*":
if Text[0:1] != "-":
Out = open(OutSb, "a")
Out.write("\n"+F+"/"+Text)
Out.close()
def lst_alw(L,F,Text):
OutSb = str(L[1])
Out = open(OutSb, "a")
Out.write("\n"+F+"/"+Text)
Out.close()
def lst_datetime(L):
import datetime
x = datetime.datetime.now()
L[0] = x.strftime("%d")+"."+x.strftime("%m")+"."+x.strftime("%Y")+"-"+x.strftime("%H")+":"+x.strftime("%M")
return L
Sez = []
def lst_sez(L,Sez):
for Pol in Sez:
lst(L,"... ",str(Pol))
Max = 0
def lst_sez_alw(L,Sez,Max):
Poc = 1
for Pol in Sez:
if Poc > Max:
break
lst_alw(L,"... ",str(Pol))
Poc += 1
def lst_sez_poz(L,Sez):
Poz = 0
for Pol in Sez:
Poz += 1
Pom = str(Poz)+" ... "
lst_alw(L,Pom,str(Pol))
... #4
## ------------------------------------------------------------------------------
Sez = []
Pol = 0
InpF = ""
def sez_app_f(Sez,InpF):
Inp = open(InpF, "r")
for Radek in Inp.readlines():
Radek = Radek.strip(",\n")
Sez.append(Radek)
Inp.close()
return Sez
X = []
Y = []
Sez2 = [X,Y]
def sez2_app_f(Sez2,InpF):
Inp = open(InpF, "r")
for Radek in Inp.readlines():
Rad = Radek.strip("\n")
Rad = Rad.split(";")
Sez2[0].append(Rad[0])
Sez2[1].append(Rad[1])
Inp.close()
return Sez2
def sez_ass(Sez2,Pol):
Poz = f.sez_poz(Sez2[0],Pol)
if Poz != "*":
New = Sez2[1][Poz]
else:
New = "*"
return New
def sez_new(Sez,Pol):
try:
Poz = Sez.index(Pol)
except ValueError:
Sez.append(Pol)
return Sez
OutF = ""
App = 0
def sez_out_f(L,Sez,OutF,App):
F = "sez_out_f"
if App == 0:
Out = open(OutF, "w")
else:
Out = open(OutF, "a")
Poc = 0
for Pol in Sez:
Out.write(str(Pol)+"\n")
Poc += 1
Out.close()
f.lst(L,F,str(Poc))
def sez_poz(Sez,Pol):
try:
Pol = Sez.index(Pol)
return Pol
except ValueError:
Pom = "*"
return Pom
def sez_str(Sez):
Pom = ""
for Pol in Sez:
Pom = Pom+str(Pol)+","
return Pom
def sez_sort(Sez):
import locale
locale.setlocale(locale.LC_ALL,'czech')
Sez.sort(key=locale.strxfrm)
... #5
## -------------------------------------------------------
L = []
Par = 0
Step = 0
def ini_py(L):
F = "ini_py"
lst(L,F," ")
Job = open("w_job.py", "w")
Job.write("# pracovni job: \n")
Job.write("L = [] \n")
Job.write("P = [] \n")
Job.write("D = [] \n")
Job.write("def job(L,P,D): \n")
Job.write(" import f \n")
Job.close()
def end_py(L):
F = "end_py"
lst(L,F," ")
def create_py(L,Par,W,Step):
F = "create_py"
W = ["FcePar.py", "-", "FceInp.py", "-", "FceOut.Py", "-", 0, 0]
W[1] = "#"+str(Par)
W[7] = str(Step)
Job = open("w_job.py", "a")
Job.write(" import w"+str(Step)+"\n")
Job.write(" w"+str(Step)+".inp(L,w"+str(Step)+".par(L,P),D) \n")
Job.close()
FilW = "w"+str(Step)+".py"
Out = open(FilW, "w")
Out.write("import f, c \n")
Out.close()
read_py(L,W,W[0],W[1],Out,FilW)
read_py(L,W,W[2],W[3],Out,FilW)
read_py(L,W,W[4],W[5],Out,FilW)
Pom = " W: "+sez_str(W)
lst_alw(L,F,Pom)
return W
W = []
FilX = ""
KodX = ""
FilW = ""
def read_py(L,W,FilX,KodX,Out,FilW):
Out = open(FilW, "a")
F = "read_py"
Pom = "-1: "+sez_str(W)
lst(L,F,Pom)
Inp = open(FilX, "r")
Pla = 0
for Radek in Inp.readlines():
A = Radek.strip("\n")
B = A.split(",")
if B[0] == KodX:
if W[3] == "-":
W[3] = B[1]
W[5] = B[2]
Pla = 1
if A[0:2] == "# ":
Pla = 0
if Pla == 1:
Out.write(Radek)
W[6] += 1
Pom = "-2: "+sez_str(W)
lst(L,F,Pom)
Inp.close()
Out.close()
return W
L = []
def run_py(L):
lst_alw(L," "," ")
F = "run_py"
lst(L,F," ")
import w_job
P = []
D = []
w_job.job(L,P,D)
... #6
## ------------------------------------------------------------------------------
InpF = ""
OutF = ""
App = 0
def copy(L,InpF,OutF,App):
F = "copy"
Inp = open(InpF, "r")
if App == 0:
Out = open(OutF, "w")
else:
Out = open(OutF, "a")
Poc = 0
for Radek in Inp.readlines():
Poc += 1
Out.write(Radek)
Inp.close()
Out.close()
Pom = "*"+InpF+","+OutF+","+Q+", počet řádků: "+str(Poc)
lst(L,F,Pom)
OutF = ""
Text = ""
App = 1
def write_trans(OutF,Text,App):
if App == 0:
Out = open(OutF,"w")
else:
Out = open(OutF,"a")
Out.write(Text)
Out.close()
... #7
## ------------------------------------------------------------------------------
Radek = ""
Inp = []
Out = []
def corr(Radek,Inp,Out):
Rad = Radek.split(";")
Radek = ""
if len(Out) == 2 and Out[1] == "*/":
Pol = Out[0]
Poz = Inp.index(Pol)
Radek = Radek + Rad[Poz] + ";"
else:
for Pol in Out:
Poz = Inp.index(Pol)
try:
Radek = Radek + Rad[Poz] + ";"
except ValueError:
Radek = Radek + "Err *****;"
# Radek = Radek[0:len(Radek)-1]
return Radek
#/