PDA

View Full Version : Python - scrivere e leggere campi da file


gabmac2
22-08-2013, 23:44
fw.write(campo1+' '+campo2+' '+campo3 + '\n')
perchè non è corretto scrivere in questo modo per avere 3 variabili "salvate" distaccate da uno spazio?
Inoltre una volta memorizzati è possibile riprelevare i valori in 3 variabili diverse?
Grazie in anticipo

Xfree
22-08-2013, 23:58
In che senso non è corretto?
L'interprete python ti dà qualche errore o ti riferisci alla correttezza logica?
Perché di funzionare funziona.

var1 = 'pippo'
var2 = 'pluto'
var3 = 'paperino'
separatore = ' '
f = open('prova.txt', 'w')
f.write(var1 + separatore + var2 + separatore + var3)
f.close()


Per leggere, è sufficiente splittare la stringa secondo il carattere separatore ed ottieni i campi in una lista.

fields = f.read().split(separatore)


Per scrivere e leggere campi, come vuoi tu, secondo me, è più indicato il modulo csv.

gabmac2
23-08-2013, 10:38
grazie,
questa sera provo tutto

gabmac2
23-08-2013, 22:28
ok,tutto ok
in questo lunguaggio si può come in Ruby sottrarre un array ad un altro semplicemente con un
a=a-b?

Xfree
24-08-2013, 00:18
No.
Devi implementare qualcosa tu o poggiarti eventualmente alle operazioni dei set, sempre che tu non voglia duplicati.


a = [1,2,3,4,5]
b = [1,3,5]
c = [x for x in a if x not in b]


oppure


c = set(a) - set(b)

gabmac2
24-08-2013, 20:59
ok,molto gentile
ancora una cosa,in Python è possibile bloccare una funzione di sistema se va oltre un determinato tempo (es. 60 secondi)

Xfree
24-08-2013, 21:37
Su questo non ti so rispondere, fino ad ora non ho avuto questa necessità.
Cercando su internet, in particolare su stackoverflow, però ho visto diverse soluzioni.

gabmac2
24-08-2013, 23:47
qualche link?

cdimauro
25-08-2013, 16:15
Per quanto riguarda i socket è possibile farlo (c'è proprio un parametro timeout).

Per il resto, non credo. Forse potresti lanciare un altro processo che chiama quelle API che t'interessano, e ucciderlo dopo il tempo stabilito se non ha finito.
Non ricordo se c'è un parametro timeout per quanto riguarda l'API che permette di lanciare un altro processo. A naso direi di sì, perché nella mia mente affiora qualcosa, ma è meglio che controlli.

gabmac2
25-08-2013, 22:43
ad esempio richiamando una funzione di una libreria di python non è possibile avere un timeout?

cdimauro
26-08-2013, 18:35
Come ti avevo già detto, c'è solo per i socket. Se ti serve per altre API, devi pensarci tu, con le indicazioni che t'ho fornito.