lrosselli62
Profilo di
Nome | lrosselli62 |
---|---|
Indirizzo email | n/a |
Messaggi | 2 |
-
- 2023-08-24 10:43:58
- Re: Le Funzioni in Python: definizione, chiamata, esecuzione, come posso andare in uno specifica punto del programma dopo vaver eseguito una funzione ?
- Forum >> Principianti
- Salve,
ringrazio Gabbo e Nuzzopippo per le risposte e i suggerimenti.
inserisco un pezzo di codice del mio programmino che, sinteticamente, dovrebbe:
1) da input di un file report es. rep1
2) leggere le righe e trovare delle stringhe
3) modificare le suddette stringhe
4) stampare (veramente le scrive in un altro file) le suddette stringhe.
Il mio programmino funziona, soltanto che quando no trova la stringa , chiede l'impu di un altro file report, ma invece di ri-iniziare la ricerca delle stringhe, salta la ricerca delle strighe trovate in precedenza.
La mia richiesta è lecita: se da un file prendo delle stringhe, le modifico e le scrivo in un altro file, se non trovo una stringa, devo prendere un alto file e ricercare tutte le stringhe.
In qualche modo ho risolto ma inserisco una parte del codice a uso "didattico" per i principianti come me.
Una parte del codice del mio programmino è la seguente:
path = "C:\\Python\\"
def Start ():
global FileTracemark
FileTracemark = input('Inserisci il nome_file: ')
def Tr_fail():
print("Parametro Non trovato")
Start()
def Tr_read(a, x, y):
''' Funzione che legge file report (riga x riga), cerca il parametro a = stringa contenuta nella riga,
x e y posizione inizio e fine della riga '''
f = open(path + FileTracemark, "r")
riga = f.readline()
while riga != "": # ciclo di wile per stampare tutte le righe del file report
if riga.find(a) >= 0: # cerco se "riga" (a) es. contiene "ECU="
a = riga[x:y] # assegno alla variabile (a) es. ECU_SN il valore di parte della riga
#print(a) # stampo riga (a) es. 033323220000236 (15 caratteri)
return a # utilizzo la variabile (a) fuori dalla funzione
break # se la ricerca (find) è True interrompe il ciclo di wile
riga = f.readline() # leggo nuova riga
else:
f.close
Tr_fail()
f.close()
Start()
ECU_SN = Tr_read("ECU=", 4, 19)
PCBA_SN =Tr_read("PCBA=", 5, 20)
COD_PROD = Tr_read("CODICE_PROD=", 12, 25)
PCBA_HW = Tr_read("PCBA_HW=", 8, 10)
CODICE = Tr_read("CODICE_01=", 10, 16)
OMOL = Tr_read("OMOL_01=", 8, 21)
SW_1 = Tr_read("SW VERS1=", 9, 13)
from datetime import datetime
obj = datetime.now() # Estrazione della data corrente
DayToYear = obj.strftime("%j%y") # Estrazione nr. giorni da inizio anno %j e anno 2 caratteri %y
#WeekCode = obj.strftime("%W") # Estrazione nr. settimana da inizio anno
ECU_SN_COD = 'T' + DayToYear + '0' + str(ECU_SN[8:15]) + '0'
print(ECU_SN_COD)
def str_comp(var, x, y):
'''' Funzione che elabora la stringa (var) : Rimuove tutti gli 0 da sx -- Converte in esadecimale e trasforma in int --
Aggiunge tanti 0 a sx fino a quando la stringa diventa 8 caratteri -- x - y inizio e fine '''
var = str(var)
var = var[x:y].lstrip('0')
var = hex(int(var))
var = var[2:].zfill(
#print(var)
return var
PCBA_SN_COD = str_comp(PCBA_SN, 8, 15)
PCBA_SN_COD = PCBA_SN[6:8] + PCBA_SN[4:6] + PCBA_SN_COD + PCBA_HW + '0'
print(PCBA_SN_COD)
print(COD_PROD)
print(SW_1)
il file rep1, da dare come input è il seguente
1,0;
ECU=033323220000236
PCBA=033223200000134
CODICE_PROD=ABC12345-1000
PCBA_HW=01
CODICE_01=00AB10
OMOL_01=01-01-23 1037
SW VERS1=0103
L'output sul terminal di VSC è il seguente
PS C: "C:/Program Files/Python39/python.exe" c:/Python/Esempio.py
Inserisci il nome_file: rep1
T23623000002360
202300000086010
ABC12345-1000
0103
-
- 2023-08-22 14:16:18
- Le Funzioni in Python: definizione, chiamata, esecuzione, come posso andare in uno specifica punto del programma dopo vaver eseguito una funzione ?
- Forum >> Principianti
-
Salve,
sono un elettronico votato alla programmazione e sono un neo iscritto a questo forum.
Ho iniziato a programmare in Python e fatto alcuni programmini che "manipolano" file di testo e poi li stampano.
Mi è chiaro tutto ciò che riguarda la Funzione cioè definizione, chiamata, esecuzione ecc.. e quindi mi è chiaro che una funzione , quando viene eseguita, memorizzi in punto del programma in modo che dopo l'esecuzione del codice ritorni a quel punto.
Invece, mi trovo a risolvere la seguente questione: ho una funzione (ricerca su file) che se trova il parametro impostato, esegue il codice ecc... ma se non trova il parametro impostato esce e chiama un'altra funzione che esegue il suo codice e NON DOVREBBE ritornare alla funzione precedente MA andare in un punto specifico del programma.
Come posso risolvere il problema ?
LR