commandwrapper הוא מודול פייתון לעטוף פקודת הפגז לתוך אובייקט Python הליכי.
שימוש:
אתה רוצה להפעיל את הפקודות הבאות bash בנושא:
[@ Localhost משתמשים ~] ls -l $ | pdf grep | WC -l
5
כאן הוא איך אתה יכול לעשות את זה:
>>> Ls = WrapCommand ("ls -l ')
>>> GrepPdf = WrapCommand ('pdf grep')
>>> Wc = WrapCommand ('בב"ש -l')
>>> Wc.stdin = GrepPdf
>>> GrepPdf.stdin = Ls
>>> Wc.start ()
>>> דברים #Do
...
>>> Wc.join ()
>>> Wc.results
(5 n ',' ')
הרכוש 'התוצאות' הוא tuple (stdoutdata, stderrdata)
גם אתה יכול לעשות את זה ככה:
>>> Ls = WrapCommand ("ls -l | grep pdf | WC -l ', פגז = True)
>>> Ls.start ()
>>> דברים #Do
>>> Ls.join ()
>>> Ls.results [0]
'5 n "
היית צריך לציין "פגז = True 'כאשר הפקודה שברצונך לבצע בנויה למעשה לקליפה. כלומר: על Windows אם אתה משתמש בנבנית בפקודות כמו "dir" או "עותק ': http://docs.python.org/library/subprocess.html#subprocess.Popen
המטרה לעשות את זה בחוט היא כאשר הפקודות לעיל עשויות לקחת כמה שעות, ושאתה רוצה לבצע משימות אחרות בינתיים. אתה יכול לבדוק את התהליך עדיין פועל עם:
>>> Wc.is_alive ()
False
'אמיתי' יוחזר אם עדיין פועל. לסיימו בטרם עת (כלומר, הוא נקלע למבוי סתום) יש לך את 'להרוג ()' 'לסיים ()', או 'שיטות send_signal (אות) שהם דוברי עצמיים. כאשר אתה רוצה לחכות לחוט ועד סופו, השתמש בשיטה "להצטרף () ': http://docs.python.org/library/threading.html#threading.Thread.join
אתה רוצה להפעיל את הפקודות הבאות bash ללא השחלה:
[@ Localhost משתמשים ~] ls -l $ | pdf grep | WC -l
5
כאן הוא איך אתה יכול לעשות את זה:
>>> Ls = WrapCommand ("ls -l ')
>>> GrepPdf = WrapCommand ('pdf grep')
>>> Wc = WrapCommand ('בב"ש -l')
>>> ב"ש (GrepPdf (Ls))
'5 n "
הימנע עושה את זה לתהליכים שבו כמות גדולה של נתונים מוזרמות בין כל פקודה.
במקום זאת, לעשות את זה בדרך זו:
>>> Ls = WrapCommand ("ls -l | grep pdf | WC -l ', פגז = True)
>>> Ls ()
'5 n "
מעדיף את שיטת הליכי במקום אם זה עלול לקחת זמן רב ושאתה רוצה לבצע משימות אחרות בינתיים.
ניתן לציין עוד פגז להפעלת פקודות:
>>> Ls = WrapCommand ("ls", פגז = 'C: /windows/System32/WindowsPowerShell/v1.0/powershell.exe' = True, הפעלה)
>>> Ls הדפסה ()
& Nbsp; מדריך: C: Users איב python_tests
שם אורך המצב LastWriteTime
---- ------------- ------ ----
-a --- commandwrapper.py 27/01/2011 0:14 7006
-a --- commandwrapper.pyc 27/01/2011 0:15 7048
ניתן גם להשתמש בהקשר לניהול (with_item): http://docs.python.org/reference/compound_stmts.html#grammar-token-with_item
דוגמא:
>>> עם WrapCommand ("ls -l ') כLs:
... עם WrapCommand ('pdf grep') כGrepPdf:
... עם WrapCommand ("-l WC ') כשירותים:
... Wc.stdin = GrepPdf
... GrepPdf.stdin = Ls
... Wc.start ()
... דברים #Do
... Wc.join ()
...
>>> Wc.results
(5 n ',' ')
אתה יכול גם פשוט רוצה שתהיה לי objet subprocess:
>>> Ls = WrapCommand ("ls -l ')
>>> Lscmd = ls.makeCmd ()
>>>
האובייקט חזר (lscmd בדוגמא לעיל) הוא אובייקט subprocess.Popen סטנדרטי
WrapOnceCommand זהה WrapCommand, אבל תכונת cmd שהוא אובייקט subprocess.Popen ייווצר פעם אחת ולתמיד לכן Methode הריצה (או האובייקט) יכולה להיקרא רק פעם אחת. מטרתו להשיק פקודת בחוט, ויש פקודה זו בקלות להתחיל / הפסיקה ממקום אחר
מה חדש במהדורה זו:.
- פרטי יצירת קשר של מחבר השתנה.
מה חדש בגרסה 0.4:
- אזהרה כאן: http: //docs.python. org / / datamodel.html אובייקט # .__ del __
דרישות :
- Python
תגובות לא נמצא