[Python] Lancio di stampe con Python

Daniele Varrazzo piro a develer.com
Mar 9 Dic 2014 14:51:10 CET


On 2014-12-09 13:40, Marco Fochesato wrote:
> Ciao a tutti,
> non riesco a capire dove sbaglio sinceramente.
> 
> import subprocess
> subprocess.call(["/usr/bin/lpr  -P"+stampante, nomefile)
> 
> L'ambiente in cui lavoro č Linux.
> Se lancio il comando da terminale, con ovviamente al posto delle 
> variabili
> il nome della stampante e il nome del file, riesco a lanciare la 
> stampa.
> Se lo lancio con il comando sopra descritto, mi esce un errore:
> 
> OSError: [Errno 2] File o directory non esistente
> 
> Se invece lancio il comando senza la stampante, la stampa mi riesce 
> sulla
> stampante predefinita di sistema.
> 
> 
> Poi, se un domani volessi lanciare le stampe anche su windows, 
> funzionerą?
> Non credo...
> 
> Avete qualche suggerimento in merito?

Quello che hai scritto e` un errore: hai una lista aperta e non chiusa.

Probabilmente l'errore e` che se passi i comandi come una stringa devi 
anche usare shell=True. Questo ha degli svantaggi/pericoli ben spiegati 
nella documentazione. Il modo piu` sicuro e spesso piu` pratico e` di 
passare gli argomenti come una lista: in questo caso il primo elemento 
dev'essere l'eseguibile, quindi qualcosa tipo

     subprocess.call(["/usr/bin/lpr", "-P" + stampante, nomefile])

-- Daniele


Maggiori informazioni sulla lista Python