Re: [Python] leggere lo standard output di un programma esterno

2012-06-01 Per discussione Giovanni Marco Dall'Olio
de nada... mi hanno fatto notare che mi sono dimenticato le parentesi
quadre:

myoutput = subprocess.check_output(['ls', '-a']

2012/6/1 Matteo Perini perini.mat...@gmail.com

 myoutput = subprocess.check_output('ls', '-a')




-- 
Giovanni Dall'Olio, phd student
IBE, Institut de Biologia Evolutiva, CEXS-UPF (Barcelona, Spain)

My blog on bioinformatics: http://bioinfoblog.it
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] leggere lo standard output di un programma esterno

2012-06-01 Per discussione Giovanni Marco Dall'Olio
2012/6/1 Matteo Perini perini.mat...@gmail.com

  Il 01/06/2012 09:31, Giovanni Marco Dall'Olio ha scritto:

 de nada... mi hanno fatto notare che mi sono dimenticato le parentesi
 quadre:

 myoutput = subprocess.check_output(['ls', '-a']

 2012/6/1 Matteo Perini perini.mat...@gmail.com

 myoutput = subprocess.check_output('ls', '-a')


  Si ma quello non è assolutamente un problema ;)

 Avrei un altra domanda invece... se posso.
 con subprocess chiamo molte volte in sequenza lo stesso comando e non
 riscontro nessun problema perchè il comando termina prima che venga
 richiamato nuovamente.
 Se però contemporaneamente lo richiamo tramite un button della gui
 ottengo errore e si blocca tutto.
 Questo succede perchè all'interno del comando che lancio viene richiamata
 una videocamera che, se è già attiva in un altra istanza del programma,
 risulterà busy.
 C'è un modo per controllare se un programma è in running sul SO?
 E' una cosa che secondo voi posso gestire con try except?


Io non sono molto esperto di programmazione di sistema, pero mi vengono in
mente un paio di  modi per risolvere il problema:

  * usare un .lock file, ovvero fare in modo che la applicazione crei un un
file temporaneo quando si avvia e che lo distrugga quando termina. Per
esempio, firefox usa (o usava) questo sistema.
  * su un sistema unix, lanciare subprocess.check_output(ps aux) e
verificare se l'applicazione è in esecuzione
  * forse si puó usare anche un try-except, peró potrebbe essere difficile
distinguere se la videocamera non risponde perché è occupata o se invece
non risponde perché ci sono altri problemi, e.g. non è collegata.

Probabilmente esistono soluzioni piú eleganti che permettono di definire
code di jobs ed eseguire il comando quando la videocamera si libera, peró
non ti saprei consigliare una libreria particolare.





 Ciao
 e grazie di nuovo.
 Matteo

 ___
 Python mailing list
 Python@lists.python.it
 http://lists.python.it/mailman/listinfo/python




-- 
Giovanni Dall'Olio, phd student
IBE, Institut de Biologia Evolutiva, CEXS-UPF (Barcelona, Spain)

My blog on bioinformatics: http://bioinfoblog.it
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] leggere lo standard output di un programma esterno

2012-06-01 Per discussione Walter Valenti



  * usare un .lock file, ovvero fare in modo che la applicazione crei un
 un file temporaneo quando si avvia e che lo distrugga quando termina. 
 Per esempio, firefox usa (o usava) questo sistema.

Es:
import fcntl
fk=open(lock_path,w)
try:
    fcntl.flock(fk,fcntl.LOCK_EX + fcntl.LOCK_NB)  ## lock non bloccante
    ### FAI QUELLO CHE DEVI !!
except:
    ### ESCI ###

Dove lock_path è in path assoluto del file che usi come lock.

___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] leggere lo standard output di un programma esterno

2012-06-01 Per discussione gianfranco guzzo
Sapete che mi piacerebbre capire di piú quello che fate? Qualcuno
disponibile a dare qualche ora di lezione(a pagamento ovvio)? Ho seguito
corsi su python e mi piacerebbe poter gestire un impiango di
videosorveglianza per casa mia e il mio ufficio e utilizzare sharp develop
come si deve...pero' preferisco farlo scambiando di pers
ona piu che via mail o seguendo video.
Il giorno 01/giu/2012 08:57, Matteo Perini perini.mat...@gmail.com ha
scritto:

 Il 30/05/2012 18:57, Giovanni Marco Dall'Olio ha scritto:


 Nelle ultime versioni di python (2.6) tutti i moduli per eseguire
 comandi esterni sono stati raccolti nella libreria subprocess.
 Leggi per esempio il warning in rosso nella documentazione di commands
 http://docs.python.org/**library/commands.htmlhttp://docs.python.org/library/commands.html,
  o PEP 0324
 http://www.python.org/dev/**peps/pep-0324/http://www.python.org/dev/peps/pep-0324/

 Nel tuo caso la sintassi di subprocess è molto simile a quella di
 commands, ovvero:

 $: myoutput = subprocess.check_output('ls', '-a')
 $: print myoutput

  Grazie era proprio quello che mi serviva e che volevo sapere.
 Ciao
 Matteo

 __**_
 Python mailing list
 Python@lists.python.it
 http://lists.python.it/**mailman/listinfo/pythonhttp://lists.python.it/mailman/listinfo/python

___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] leggere lo standard output di un programma esterno

2012-06-01 Per discussione Matteo Perini

Il 01/06/2012 10:12, Giovanni Marco Dall'Olio ha scritto:


Io non sono molto esperto di programmazione di sistema, pero mi 
vengono in mente un paio di  modi per risolvere il problema:


  * usare un .lock file, ovvero fare in modo che la applicazione crei 
un un file temporaneo quando si avvia e che lo distrugga quando 
termina. Per esempio, firefox usa (o usava) questo sistema.
  * su un sistema unix, lanciare subprocess.check_output(ps aux) e 
verificare se l'applicazione è in esecuzione
  * forse si puó usare anche un try-except, peró potrebbe essere 
difficile distinguere se la videocamera non risponde perché è occupata 
o se invece non risponde perché ci sono altri problemi, e.g. non è 
collegata.


Probabilmente esistono soluzioni piú eleganti che permettono di 
definire code di jobs ed eseguire il comando quando la videocamera si 
libera, peró non ti saprei consigliare una libreria particolare.



Grazie della risposta.
Penso proverò con un file di lock però temo che avrò qualche problema a 
far aspettare la chiamate del processo fino a quando .lock non viene 
distrutto.

Questo pomeriggio ci provo.
Grazie mille.
Matteo
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] leggere lo standard output di un programma esterno

2012-06-01 Per discussione Matteo Perini

Il 01/06/2012 10:34, Walter Valenti ha scritto:



   * usare un .lock file, ovvero fare in modo che la applicazione crei un
un file temporaneo quando si avvia e che lo distrugga quando termina.
Per esempio, firefox usa (o usava) questo sistema.

Es:
import fcntl
fk=open(lock_path,w)
try:
 fcntl.flock(fk,fcntl.LOCK_EX + fcntl.LOCK_NB)  ## lock non bloccante
 ### FAI QUELLO CHE DEVI !!
except:
 ### ESCI ###

Dove lock_path è in path assoluto del file che usi come lock.


Grazie della risposta.
non conoscevo fcntl
Ok ma come ho risposto a Giovanni non vorrei uscire se il lock è 
attivo ma mettere in coda la chiamata al comando in attesa che il lock 
venga distrutto.

Grazie
Matteo
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] leggere lo standard output di un programma esterno

2012-06-01 Per discussione Nicola Larosa
Matteo Perini wrote:
 da ingegnere mi mancano le basi della programmazione (sigh)

Eh? Forse ti riferivi a qualche tipo di ingegnere in particolare?

-- 
Nicola Larosa - http://www.tekNico.net/

It feels *good* when your Go tests seem to build and run in the time
Python takes to lever itself out of bed and yawningly load a module.
 - William Reade, February 2012
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] leggere lo standard output di un programma esterno

2012-06-01 Per discussione Matteo Perini

Il 01/06/2012 12:34, Nicola Larosa ha scritto:

Matteo Perini wrote:

da ingegnere mi mancano le basi della programmazione (sigh)

Eh? Forse ti riferivi a qualche tipo di ingegnere in particolare?

Mah... io sono ing. meccanico e l'unico esame di programmazione che 
c'era nel mio corso di studi era su Visual Basic.

Valutate voi.
Il mio modesto parere è che non sia stato particolarmente utile.
Ciao
Matteo
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] leggere lo standard output di un programma esterno

2012-06-01 Per discussione Nicola Larosa
 Matteo Perini wrote:
 da ingegnere mi mancano le basi della programmazione (sigh)

 Nicola Larosa ha scritto:
 Eh? Forse ti riferivi a qualche tipo di ingegnere in particolare?

Matteo Perini wrote:
 Mah... io sono ing. meccanico

Lo prendo per un sì, grazie della precisazione.

-- 
Nicola Larosa - http://www.tekNico.net/

It feels *good* when your Go tests seem to build and run in the time
Python takes to lever itself out of bed and yawningly load a module.
 - William Reade, February 2012
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] leggere lo standard output di un programma esterno

2012-06-01 Per discussione Simone Federici
2012/6/1 Nicola Larosa n...@teknico.net

 Lo prendo per un sì, grazie della precisazione.


Entrambi l'ingegneri?

Per una persona ottimista, il bicchiere e' mezzo pieno. Per una persona
pessimista, il bicchiere e' mezzo vuoto. Per l'ingegnere il bicchiere e'
due volte più grande del necessario.
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] leggere lo standard output di un programma esterno

2012-06-01 Per discussione Walter Valenti


  Es:
  import fcntl
  fk=open(lock_path,w)
  try:
       fcntl.flock(fk,fcntl.LOCK_EX + fcntl.LOCK_NB)  ## lock non bloccante
       ### FAI QUELLO CHE DEVI !!
  except:
       ### ESCI ###
 
  Dove lock_path è in path assoluto del file che usi come lock.
 
 Grazie della risposta.
 non conoscevo fcntl
 Ok ma come ho risposto a Giovanni non vorrei uscire se il lock è 
 attivo ma mettere in coda la chiamata al comando in attesa che il 
 lock 
 venga distrutto.


In questo caso ti basta usare un lock bloccante:
fcntl.flock(fk,fcntl.LOCK_EX)

rimane in attesa fino a che non viene rilasciato il lock precedente.


Walter
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] leggere lo standard output di un programma esterno

2012-05-30 Per discussione Giovanni Marco Dall'Olio
2012/5/30 Matteo Perini perini.mat...@gmail.com

 Ciao a tutti,
 scrivo per chiedere un consiglio.
 Avrei bisogno di importare lo standard output di un programma c++ nel mio
 software (in python).



Nelle ultime versioni di python (2.6) tutti i moduli per eseguire comandi
esterni sono stati raccolti nella libreria subprocess.
Leggi per esempio il warning in rosso nella documentazione di commands
http://docs.python.org/library/commands.html , o PEP 0324
http://www.python.org/dev/peps/pep-0324/

Nel tuo caso la sintassi di subprocess è molto simile a quella di commands,
ovvero:

$: myoutput = subprocess.check_output('ls', '-a')
$: print myoutput






 Attualmente ho risolto con queste due righe:

 import commands

 x = commands.getoutput('./prova')

 e il tutto funziona.
 La domanda è:
 Ci sono altri metodi per avere questo stesso effetto senza importare la
 libreria commands?
 Forse la domanda sembra sciocca ma volevo capire se mi stò legando ad una
 libreria che posso evitare o se invece usare commands è la strda più
 indicata.
 Grazie
 Ciao
 Matteo

 __**_
 Python mailing list
 Python@lists.python.it
 http://lists.python.it/**mailman/listinfo/pythonhttp://lists.python.it/mailman/listinfo/python




-- 
Giovanni Dall'Olio, phd student
IBE, Institut de Biologia Evolutiva, CEXS-UPF (Barcelona, Spain)

My blog on bioinformatics: http://bioinfoblog.it
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] leggere lo standard output di un programma esterno

2012-05-30 Per discussione Lorenzo Sutton

On 30/05/12 18:57, Giovanni Marco Dall'Olio wrote:

2012/5/30 Matteo Perini perini.mat...@gmail.com
mailto:perini.mat...@gmail.com

Ciao a tutti,
scrivo per chiedere un consiglio.
Avrei bisogno di importare lo standard output di un programma c++
nel mio software (in python).



Nelle ultime versioni di python (2.6) tutti i moduli per eseguire
comandi esterni sono stati raccolti nella libreria subprocess.
Leggi per esempio il warning in rosso nella documentazione di commands
http://docs.python.org/library/commands.html , o PEP 0324
http://www.python.org/dev/peps/pep-0324/

Nel tuo caso la sintassi di subprocess è molto simile a quella di
commands, ovvero:

$: myoutput = subprocess.check_output('ls', '-a')
$: print myoutput


Su una macchina che era bloccata a python 2.5 avevo fatto così (scusate 
l'inglese):


http://bpaste.net/show/30444/

Lorenzo.
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python