View Full Version : [Python]Cambiare il codice dall'interno
VirtualFlyer
23-03-2010, 18:27
Sto scrivendo un programma che fa determinate cose in base all'input che gli viene inserito, una cosa tipo:
prova = raw_input ('scrivi qui il comando: ')
if prova == '1':
fai qualcosa
elif prova == '2':
fai qualcos'altro
...
insomma, una cosa molto semplice.
Ora avrei bisogno che se l'operatore scrivesse tipo 'ciao'
succedesse una cosa tipo:
elif prova = 'ciao'
print 'Sistema di eccezioni'
eccezione = raw_input ('Scrivi il testo che vuoi che sia digitato affinchè il risultato sia 4')
# poi dovrebbe aprire un file di testo
#trovare una riga che inizia con #
#andare alla riga prima
# scrivere qualcosa tipo: elif prova == eccezione
print 4
#aprire un piccolo batch
#chiudersi
Il batch andrebbe a cancellare il .py e a rinominare il txt .py, così da avere il programma con l'eccezione definita dall'utente.
credo che potrei arrivare fino ad aprire il file e a trovare la riga con #, ma poi come faccio a dirgli in che riga scrivere? (tra l'altro, ripensandoci, credo che dovrei aprirlo due volte. una in lettura per trovare # e un'altra in scrittura)
Un'altra ipotesi si potrebbe fare, sapendo già cosa fare in caso di eccezione, scrivere gli input per cui vale l'eccezione e farli leggere dal programma senza dover usare anche il batch?
Forse mi sto solo complicando la vita, ma mi diverto così! :D
P.S.
Mi consigliate qualche GUI per python che sia facile e che dia un risultato decente?
P.P.S
Se non ho letto male, youtube è stato programmato in python, ma non servirebbe aver installato l'interprete allora?
cdimauro
23-03-2010, 20:28
Sto scrivendo un programma che fa determinate cose in base all'input che gli viene inserito, una cosa tipo:
prova = raw_input ('scrivi qui il comando: ')
if prova == '1':
fai qualcosa
elif prova == '2':
fai qualcos'altro
...
insomma, una cosa molto semplice.
Ora avrei bisogno che se l'operatore scrivesse tipo 'ciao'
succedesse una cosa tipo:
elif prova = 'ciao'
print 'Sistema di eccezioni'
eccezione = raw_input ('Scrivi il testo che vuoi che sia digitato affinchè il risultato sia 4')
# poi dovrebbe aprire un file di testo
#trovare una riga che inizia con #
#andare alla riga prima
# scrivere qualcosa tipo: elif prova == eccezione
print 4
#aprire un piccolo batch
#chiudersi
Il batch andrebbe a cancellare il .py e a rinominare il txt .py, così da avere il programma con l'eccezione definita dall'utente.
credo che potrei arrivare fino ad aprire il file e a trovare la riga con #, ma poi come faccio a dirgli in che riga scrivere? (tra l'altro, ripensandoci, credo che dovrei aprirlo due volte. una in lettura per trovare # e un'altra in scrittura)
Ti do qualche suggerimento.
Converrebbe leggere tutte le righe del file in una lista, e individuare la posizione col #. A questo punto inserire una o più righe in quella posizione diventa banale.
Un'altra ipotesi si potrebbe fare, sapendo già cosa fare in caso di eccezione, scrivere gli input per cui vale l'eccezione e farli leggere dal programma senza dover usare anche il batch?
Non ho capito bene, scusa. Potresti essere più chiaro?
Forse mi sto solo complicando la vita, ma mi diverto così! :D
L'importante è divertirsi: è così che si impara meglio, si fissano le cose in mente, e soprattutto si mantiene la voglia di continuare a programmare. :)
P.S.
Mi consigliate qualche GUI per python che sia facile e che dia un risultato decente?
Mai usate, da quel che ho letto forse ti conviene usare le PyQT.
P.P.S
Se non ho letto male, youtube è stato programmato in python,
Esatto: è realizzato quasi interamente in Python, da quanto dicono gli ingegneri che l'hanno realizzato.
ma non servirebbe aver installato l'interprete allora?
Certamente.
Ryuzaki_Eru
24-03-2010, 14:09
Prima cosa, non è
elif prova = 'ciao'
ma
elif prova == 'ciao'
Per quanto riguarda il file lo puoi benissimo aprire una volta sola, in modalità lettura e scrittura (attento che nella modalità scrittura ti cancella quello che hai già scritto, quindi aprilo nella modalità corretta), e poi usare tell() che ti dice in quale posizione del file sei e seek() che ti riporta ad una determinata posizione nel file. Oppure usare readlines() come ha detto cdimauro.
Mi consigliate qualche GUI per python che sia facile e che dia un risultato decente?
Le PyQT sono le migliori.
VirtualFlyer
24-03-2010, 14:22
Ti do qualche suggerimento.
Converrebbe leggere tutte le righe del file in una lista, e individuare la posizione col #. A questo punto inserire una o più righe in quella posizione diventa banale.
Non ho capito bene, scusa. Potresti essere più chiaro?
L'importante è divertirsi: è così che si impara meglio, si fissano le cose in mente, e soprattutto si mantiene la voglia di continuare a programmare. :)
Mai usate, da quel che ho letto forse ti conviene usare le PyQT.
Esatto: è realizzato quasi interamente in Python, da quanto dicono gli ingegneri che l'hanno realizzato.
Certamente.
Grazie mille, comunque era un po' una stupidata e a ripensarci non era fattibile.
So che per te può essere banale, ma mi puoi dire i comandi per favore? :D
Per youtube, come fa allora a funzionare anche su computer senza interprete?
VirtualFlyer
24-03-2010, 14:26
Prima cosa, non è
elif prova = 'ciao'
ma
elif prova == 'ciao'
Per quanto riguarda il file lo puoi benissimo aprire una volta sola, in modalità lettura e scrittura (attento che nella modalità scrittura ti cancella quello che hai già scritto, quindi aprilo nella modalità corretta), e poi usare tell() che ti dice in quale posizione del file sei e seek() che ti riporta ad una determinata posizione nel file. Oppure usare readlines() come ha detto cdimauro.
Le PyQT sono le migliori.
Sì, avevi ragione per ==, un errore sciocco!
mi potreste fare un esempio di codice?
Ultima cosa: mi sapreste consigliare qualche tutorial sulle PyQT?
EDIT: finora ho trovato questo http://zetcode.com/tutorials/pyqt4/
Ryuzaki_Eru
24-03-2010, 15:57
YouTube gira sul tuo pc? No, quindi a te non interessa avere un interprete.
Per le PyQt il miglior libro è "Rapid GUI Development With Python and Qt".
Per il tuo problema basta che guardi la documentazione, se non ti abitui non imparerai mai. Ti faccio un altro esempio (non l'ho provato):
entrata = open("leggo.txt", 'r')
uscita = open("scrivo.txt", 'w')
for p,l in enumerate(entrata):
if l[0] == '#':
# qua scrivi quello che devi
uscita.write(l)
entrata.close()
uscita.close()
VirtualFlyer
24-03-2010, 16:06
YouTube gira sul tuo pc? No, quindi a te non interessa avere un interprete.
Per le PyQt il miglior libro è "Rapid GUI Development With Python and Qt".
Per il tuo problema basta che guardi la documentazione, se non ti abitui non imparerai mai. Ti faccio un altro esempio (non l'ho provato):
entrata = open("leggo.txt", 'r')
uscita = open("scrivo.txt", 'w')
for p,l in enumerate(entrata):
if l[0] == '#':
# qua scrivi quello che devi
uscita.write(l)
entrata.close()
uscita.close()
Grazie, per aprire il batch cosa posso usare?
Edit:
Ho provato ad installare le pyqt4:
Ho scaricato il qtsdk, sip e le pyqt4
Ora ho copiato la cartella di sip ed ho aperto configure.py e i 4 o 5 file python che ne sono derivati. Poi ho provato ad aprire il file configure.py di qtpy4, ma ha dato errore perchè non esiste alcun modulo chiamato sipconfig
In un lampo di genio ho capito che questo modulo deve essere in qualche modo connesso all'interprete, ma mi potreste spiegare come si fa?
Grazie mille in anticipo
Ryuzaki_Eru
24-03-2010, 18:30
Non ho capito nulla, in ogni caso se sei su Windows ci sono gli exe pronti, se sei su linux ci sono i pacchetti già pronti da installare. Tutto sto casino non serve. Per aprire il batch usi os.system.
VirtualFlyer
24-03-2010, 19:07
Non ho capito nulla, in ogni caso se sei su Windows ci sono gli exe pronti, se sei su linux ci sono i pacchetti già pronti da installare. Tutto sto casino non serve. Per aprire il batch usi os.system.
Chiedo scusa, sono stato molto stupido. Hai perfettamente ragione ho fatto solo un casino inutile.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.