Re: [Python] leggere lo standard output di un programma esterno
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/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
* 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
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
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
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
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
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
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/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
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/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
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