Topic: Risolto: Passaggio tra script  (Letto 671 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline maucladeb

  • python unicellularis
  • *
  • Post: 3
  • Punti reputazione: 0
    • Mostra profilo
Risolto: Passaggio tra script
« il: Novembre 06, 2017, 23:50 »
Buonasera a tutti
credo di non aver inviato il post fatto precedentemente(uguale a questo) .
ho un problema:
sono un vecchio programmatore con gw-basic, ho da anni abbandonato windows e sono passato a linux.
Ho deciso di cimentarmi con python, sono quindi fortemente inesperto.
Ho creato uno script che serve da menù dal quale faccio una scelta che attraverso "import nome script" mi lancia un secondo script, ma quando torno al precedente questo ha mantenuto i valori delle variabili; è come se si fosse addormentato e mai chiuso.
Aiuto
Cosa succede ?
« Ultima modifica: Novembre 07, 2017, 19:33 da maucladeb »

Offline Giornale di Sistema

  • python sapiens sapiens
  • ******
  • Post: 3.124
  • Punti reputazione: 4
    • Mostra profilo
    • Distillato di Python
Re:Passaggio tra script
« Risposta #1 il: Novembre 07, 2017, 08:17 »
Il flusso di esecuzione è unico, se stai eseguendo uno non stai eseguendo l'altro. In realtà non sono sicuro di aver capito cosa stai facendo e come, sopratutto questo punto:
ma quando torno al precedente questo ha mantenuto i valori delle variabili; è come se si fosse addormentato e mai chiuso.
Con "addormentato e mai chiuso" ti riferisci al primo script? Se si, chi ti aspettavi avrebbe dovuto cambiarne i valori delle variabili, l'esecuzione del secondo script o la prosecuzione dell'esecuzione del primo script dopo aver importato il secondo? E cosa c'è nel secondo script e cosa fa? Perché non necessariamente è "import" la strada migliore per eseguire uno script Python da un altro:
https://stackoverflow.com/questions/1186789/what-is-the-best-way-to-call-a-python-script-from-another-python-script
https://docs.python.org/3/tutorial/modules.html

Se posso, prima di cimentarti con queste cose una bella infarinatura di Python potrebbe esserti di grande aiuto, anche per eventualmente "sgrossare" abitudini di programmazione e forma mentis derivanti dall'uso di GW-BASIC.

Offline riko

  • python deus
  • *
  • moderatore
  • Post: 7.453
  • Punti reputazione: 12
    • Mostra profilo
    • RiK0 Tech Temple
Re:Passaggio tra script
« Risposta #2 il: Novembre 07, 2017, 14:18 »
Se posso, prima di cimentarti con queste cose una bella infarinatura di Python potrebbe esserti di grande aiuto, anche per eventualmente "sgrossare" abitudini di programmazione e forma mentis derivanti dall'uso di GW-BASIC.

+1. E' davvero un rischio. Il problema e' che usare un linguaggio come Python "come GW-BASIC" e' *veramente* scomodo.
Python richiede uno stile di programmazione appena moderno. Se devi usarlo "come GW-BASIC", allora io ti suggerirei di guarda freebasic, che spesso e' 1:1 compatibile con quickbasic (nel senso, non garantiscono compatibilita', ma in pratica la maggior parte del codice gira senza modifiche).

Nota, non voglio scoraggiarti. Quello che voglio dirti e' che devi prepararti quasi a reimparare a programmare (e' successo proprio tanto negli ultimi 30 anni). Se quello che ti interessa e' "divertirti", tutto questo (e poi avere in mano la potenza di Python) e' *davvero* bello. Ma e' anche un'esperienza meno "immediata" di quello che era lavorare in Basic 30 anni fa. E' intrinsecamente molto piu' "software engineering" che "homecomputing", specie quando cominci ad usare interfacce grafiche, interfacce web, networking, etc etc etc. Oh, poi tanta gente usa Python per home computing (e cose molto semplici risultano insormontabili perche' non si sono presi tempo per darsi un po' di background).

Se invece quello che ti diverte e' "farti i programmi/script che ti servono" o vuoi un'esperienza piu' immediata, vai di freebasic. Per intenderci... prova a fare un coso che ti disegna una spezzata dove clicchi e pulisce il canvas quando schiacci invio. Fallo in Python con tkinter e poi fallo in freebasic (o viceversa).

https://www.freebasic.net/wiki/wikka.php?wakka=CatPgGfx

Offline maucladeb

  • python unicellularis
  • *
  • Post: 3
  • Punti reputazione: 0
    • Mostra profilo
Re:Passaggio tra script
« Risposta #3 il: Novembre 07, 2017, 15:50 »
Un grazie a tutti
per i pronti interventi, cerco di spiegare meglio la mia situazione:
ho già creato e messo in funzione una certa quantità di script realizzando un semplice gestionale per la mia piccola azienda ed è tutto funzionante, gestisco db, stampo documenti creo file.txt ecc., ma, premetto tutto senza interfaccia grafica.
Questo scarno insieme deve girare sia su macchine con windows, sia su linux e sia su mac, e funziona.
Con questo non voglio dire di essere diventato un super esperto in python, anzi sono solo un principiante a cui manca ancora tutta la conoscenza del mondo python, ma credo di avere quasi capito la netta differenza tra i vari linguaggi, anche perchè, usando linux mi sono già scontrato con un linguaggio diverso da gwbasic, il bash.
Cerco ora di chiarire meglio il mio problema principale :
parto da uno script che mi offre la scelta tra vari lavori, faccio la scelta e poniamo sia A e passo ad altro( servendomi della forma " import script"), quindi finito il lavoro, attraverso  un input nel secondo script, ritorno al primo.
Mi ritrovo quindi nuovamente al primo script che mi offre la scelta, se ridigito A va in errore, mentre se chiudo il terminale e rilancio il tutto funziona regolarmente.
« Ultima modifica: Novembre 07, 2017, 16:11 da maucladeb »

Offline maucladeb

  • python unicellularis
  • *
  • Post: 3
  • Punti reputazione: 0
    • Mostra profilo
Re:Passaggio tra script
« Risposta #4 il: Novembre 07, 2017, 19:30 »
Grazie
seguendo i link indicati da Giornale di Sistema ho risolto il problema, invece di usare import nome-script ho usato execfile("nome-script.py").
Avevo visto sui vari forum e guide on line la possibile sostituzione, ma erroneamente  credevo fosse un modo poco utile assieme a
import subprocess
import sys
subprocess.check_call([sys.executable, 'file.py'])
.
Ribadisco il grazie, e aggiungo che qualunque altro consiglio anche sull'approccio a python è bene accetto.
Su altri forum e gradito mettere Risolto sul titolo, penso anche qui, se così non fosse ditemelo.
« Ultima modifica: Novembre 07, 2017, 19:33 da maucladeb »

Offline RicPol

  • python sapiens sapiens
  • ******
  • Post: 2.969
  • Punti reputazione: 9
    • Mostra profilo
Re:Risolto: Passaggio tra script
« Risposta #5 il: Novembre 07, 2017, 19:44 »
> seguendo i link indicati da Giornale di Sistema ho risolto il problema, invece di usare import nome-script ho usato execfile("nome-script.py").

ecco, questo è però proprio il modo in cui NON si fanno le cose in python.

Davvero, se vuoi python dovresti studiare python senza preconcetti, imparando per esempio come funziona davvero il meccanismo degli import. Puoi seguire un buon libro, magari il Lutz.
Se invece vuoi mantenere il tuo "stile gw-basic", allora come dice Riko provati freebasic, è davvero carino.