Systemove volania v Python

Sekcia: Programovanie 03.10.2009 | 14:31
Avatar Martin Čarnogurský Fedora 15  Používateľ
Zdravim,
Prave sa ucim Python (Daryl Harms,Kenneth McDonald - Začínáme programovat v jazyce Python). Potreboval by som vediet prikaz ako je napr. system ( ) v jazyku C na volanie systemovych prikazov. Dalej by som potreboval vediet ze ci musim napisat to systemove volanie (napr. ping 195.146.132.69) rovno do prikazu alebo mozem spravit premennnu typu string (napr. x) kde bude ulozeny systemovy prikaz napr. x= 'ping 139.146.132.69' a potom uz len spustim prikaz(x). A potreboval by som vediet este poslednu vec ze jak mam ten vystup toho prikazu presmerovat napr. do premennej y alebo do suboru output.dat
Dakujem za akukolvek pomoc.
..::RootLUG::..
    • Re: Systemove volania v Python 03.10.2009 | 15:27
      Avatar Marián Sova Ubuntu 10.10  Používateľ
      import os
      os.system("ping 195.146.132.69")

      alebo
      import os
      x="ping 195.146.132.69"
      os.system(x)

      Presmerovanie som zatiaľ nenašiel
      Ale skús pozrieť tu http://docs.python.org/library/subprocess.html
      Čo ťa nezabije, to ťa posilní | Leták na propagáciu jabbera v pdf | www.mikroprocesory.sk
      • Re: Systemove volania v Python 03.10.2009 | 23:35
        Avatar Martin Čarnogurský Fedora 15  Používateľ
        Dakujem, velmi si mi pomohol.
        ..::RootLUG::..
    • Re: Systemove volania v Python 03.10.2009 | 15:51
      Avatar Marián Sova Ubuntu 10.10  Používateľ
      Lepšie to bude takto:
      from subprocess import *
      x=["ls","-l"]
      o=Popen(x,stdout=PIPE).communicate()[0]


      Výstup je v o ako string.
      Čo ťa nezabije, to ťa posilní | Leták na propagáciu jabbera v pdf | www.mikroprocesory.sk
      • Re: Systemove volania v Python 03.10.2009 | 23:34
        Avatar Martin Čarnogurský Fedora 15  Používateľ
        Dakujem, mozes mi este objastnit funkcnost tochto prikazu?
        ..::RootLUG::..
        • Re: Systemove volania v Python 04.10.2009 | 15:27
          Avatar Marián Sova Ubuntu 10.10  Používateľ
          Popen vytvorí PIPE (rúru) na daný program s danými parametrami ["ls","-l"] (to je ako v konzole napísané ls -l) a pomocou funkcie communicate vytiahne výsledok daného príkazu. Je to uvedené v tom odkaze, čo som posielal vyššie.
          Čo ťa nezabije, to ťa posilní | Leták na propagáciu jabbera v pdf | www.mikroprocesory.sk
          • Re: Systemove volania v Python 04.10.2009 | 19:23
            Avatar Martin Čarnogurský Fedora 15  Používateľ
            dakujem
            ..::RootLUG::..