commandwrapper este un modul Python pentru a încheia o comandă shell într-un obiect Python filetat.
Utilizare:
Vrei să lanseze următoarele comenzi bash într-un fir:
[Utilizator @ localhost ~] $ ls -l | grep pdf | wc -l
5
aici este modul în care se poate face:
>>> Ls = WrapCommand ("ls -l")
>>> GrepPdf = WrapCommand ('pdf grep ")
>>> Wc = WrapCommand ("wc -l")
>>> Wc.stdin = GrepPdf
>>> GrepPdf.stdin = Ls
>>> Wc.start ()
>>> #Do Chestii
...
>>> Wc.join ()
>>> Wc.results
('5 n', '')
proprietate "Rezultatele" este un tuplu (stdoutdata, stderrdata)
De asemenea, puteți face acest lucru astfel:
>>> Ls = WrapCommand ('ls -l | grep pdf | wc -l', coajă = True)
>>> Ls.start ()
>>> #Do Chestii
>>> Ls.join ()
>>> Ls.results [0]
"5 n '
Tu ar trebui să se precizeze "shell = True" atunci când comanda pe care doriți să execute este, de fapt construit în coajă. și anume: pe Windows, dacă folosiți construit în comenzi, cum ar fi "dir" sau "copie": http://docs.python.org/library/subprocess.html#subprocess.Popen
Scopul de a face aceasta intr-un fir este atunci când comenzile de mai sus poate dura câteva ore, și pe care doriți să efectuați alte sarcini între timp. Puteți verifica procesul este încă în desfășurare cu:
>>> Wc.is_alive ()
Fals
"Adevărat" ar fi returnate dacă continuă să fie difuzate. Pentru a termina prematur (adică blocate) ai "termina ()", "ucide ()" sau "(semnal) metode send_signal care sunt auto vorbind. Când doriți să așteptați pentru firul de final, utilizați "uni ()" metoda: http://docs.python.org/library/threading.html#threading.Thread.join
Vrei să lanseze următoarele comenzi bash fără filetat:
[Utilizator @ localhost ~] $ ls -l | grep pdf | wc -l
5
aici este modul în care se poate face:
>>> Ls = WrapCommand ("ls -l")
>>> GrepPdf = WrapCommand ('pdf grep ")
>>> Wc = WrapCommand ("wc -l")
>>> Wc (GrepPdf (LS))
"5 n '
Evitați face acest lucru pentru procesele în care este legata o cantitate mare de date între fiecare comandă.
în schimb, fă-o în acest fel:
>>> Ls = WrapCommand ('ls -l | grep pdf | wc -l', coajă = True)
>>> Ls ()
"5 n '
Prefer metoda filetat loc în cazul în care acest lucru poate dura o lungă perioadă de timp și pe care doriți să efectuați alte sarcini între timp.
Puteți specifica o altă coajă pentru comenzile de funcționare:
>>> Ls = WrapCommand ('ls', coajă = true =, executabile 'C: /windows/System32/WindowsPowerShell/v1.0/powershell.exe ")
>>> Ls imprimare ()
& Nbsp; director: C: Users Yves python_tests
Mod LastWriteTime Lungime Nume
---- ------------- ------ ----
-a --- 27/01/2011 00:14 7006 commandwrapper.py
-a --- 27/01/2011 00:15 7048 commandwrapper.pyc
Puteți folosi, de asemenea, Context Management (with_item): http://docs.python.org/reference/compound_stmts.html#grammar-token-with_item
exemplu:
>>> Cu WrapCommand ("ls -l") ca Ls:
... Cu WrapCommand ('pdf grep ") ca GrepPdf:
... Cu WrapCommand ('-l wc ") ca Wc:
... Wc.stdin = GrepPdf
... GrepPdf.stdin = Ls
... Wc.start ()
... #Do Chestii
... Wc.join ()
...
>>> Wc.results
('5 n', '')
Ați putea, de asemenea, pur și simplu doriți să aveți un objet subproces:
>>> ls = WrapCommand ("ls -l")
>>> Lscmd = ls.makeCmd ()
>>>
Obiectul returnat (lscmd în exemplul de mai sus) este un obiect subprocess.Popen standard de
WrapOnceCommand este la fel ca WrapCommand, dar atributul cmd care este un obiect subprocess.Popen va fi creată o dată pentru totdeauna aceea run Methode (sau obiectul) poate fi numit doar o singură dată. Scopul a lansa o comandă într-un fir, și de a avea această comandă ușor porni / oprit din altă parte
Ce este nou în această versiune:.
- autorului schimbată informatii de contact.
Ce este nou în versiunea 0,4:
- Avertisment aici: http: //docs.python. org / trimitere / datamodel.html # obiect .__ __ del
- Și becasue obiecte distruse în cazul în care nu eliminate automat de colectorul de gunoi după cum s-a descris aici:. Http://docs.python.org/library/gc.html#gc.garbage care ar putea determina creșterea utilizarea memoriei
Cerințe :
- Python
Comentariile nu a fost găsit