Topic: Nascondere output os.system()  (Letto 919 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline coppolino

  • python unicellularis
  • *
  • Post: 12
  • Punti reputazione: 0
    • Mostra profilo
    • Federico Coppola
Nascondere output os.system()
« il: Gennaio 08, 2017, 15:51 »
Buongiorno a tutti!
In questi giorni mi sto dedicando alla stesura di un piccolo script in python con il modulo system in quanto devo avviare dei comandi bash della distribuzione Gnu/Linux e ci riesco con successo, l'unico problema è che non vorrei che si vedessero sul terminale e nemmeno salvarli in un file... è possibile?
Grazie  :)

Offline riko

  • python deus
  • *
  • moderatore
  • Post: 7.453
  • Punti reputazione: 12
    • Mostra profilo
    • RiK0 Tech Temple
Re: Nascondere output os.system()
« Risposta #1 il: Gennaio 08, 2017, 17:07 »
Buongiorno a tutti!
In questi giorni mi sto dedicando alla stesura di un piccolo script in python con il modulo system in quanto devo avviare dei comandi bash della distribuzione Gnu/Linux e ci riesco con successo, l'unico problema è che non vorrei che si vedessero sul terminale e nemmeno salvarli in un file... è possibile?
Grazie  :)

usa subprocess.

Offline GlennHK

  • python sapiens sapiens
  • ******
  • Post: 1.659
  • Punti reputazione: 1
    • Mostra profilo
    • La Tana di GlennHK
Re: Nascondere output os.system()
« Risposta #2 il: Gennaio 08, 2017, 19:16 »
La soluzione corretta sarebbe subprocess, ma c'è anche il magico /dev/null

Offline coppolino

  • python unicellularis
  • *
  • Post: 12
  • Punti reputazione: 0
    • Mostra profilo
    • Federico Coppola
Re: Nascondere output os.system()
« Risposta #3 il: Gennaio 13, 2017, 21:35 »
Grazie per i consigli e per aver scoperto /dev/null  ;)

Provo entrambe le soluzioni... la seconda utilizzando /dev/null mi pare più facile anche se non ottima...  :thinking: :py:

Offline riko

  • python deus
  • *
  • moderatore
  • Post: 7.453
  • Punti reputazione: 12
    • Mostra profilo
    • RiK0 Tech Temple
Re: Nascondere output os.system()
« Risposta #4 il: Gennaio 14, 2017, 20:08 »
Provo entrambe le soluzioni... la seconda utilizzando /dev/null mi pare più facile anche se non ottima...  :thinking: :py:

No, non e' affatto ottima. Semplicemente stimola la tua pigrizia (quella di tipo sbagliato).
os.system e' il modo in cui si facevano le cose boh, nella preistoria. Per darti un'idea di quanto stai sbagliando:
- subprocess e' il modo standard di fare le cose da Python 2.4; parliamo di *13* anni fa.
- Prima di subprocess, c'era un altro modulo per sostituire os.system (che e' da sempre considerato scomodo e problematico) chiamato commands. Questo e' stato introdotto circa nel '98, ovvero quasi *20* anni fa.

Nota che perfino nella documentazione di os.system (che sorprendentemente non hai letto prima di chiedere sul forum) dice di usare subprocess.
https://docs.python.org/2/library/os.html#os.system


Offline GlennHK

  • python sapiens sapiens
  • ******
  • Post: 1.659
  • Punti reputazione: 1
    • Mostra profilo
    • La Tana di GlennHK
Re: Nascondere output os.system()
« Risposta #5 il: Gennaio 15, 2017, 15:03 »
Per l'appunto, ti ho detto "la soluzione corretta sarebbe subprocess".

Offline riko

  • python deus
  • *
  • moderatore
  • Post: 7.453
  • Punti reputazione: 12
    • Mostra profilo
    • RiK0 Tech Temple
Re: Nascondere output os.system()
« Risposta #6 il: Gennaio 16, 2017, 01:18 »
Per l'appunto, ti ho detto "la soluzione corretta sarebbe subprocess".

Infatti non obiettavo a te.

Offline GlennHK

  • python sapiens sapiens
  • ******
  • Post: 1.659
  • Punti reputazione: 1
    • Mostra profilo
    • La Tana di GlennHK
Re: Nascondere output os.system()
« Risposta #7 il: Gennaio 16, 2017, 02:19 »
E io non rispondevo a te ;)