در commandwrapper یک ماژول پایتون به بسته بندی کردن فرمان پوسته را به یک شی پایتون رشته است.
طریقه استفاده:
شما می خواهید برای راه اندازی دستورات پارتی زیر را در یک موضوع:
[کاربر @ localhost به ~] $ LS -l | های grep در قالب PDF | WC -l
5
در اینجا این است که چگونه شما می توانید آن را انجام دهید:
>>> L ها = WrapCommand ('LS -l')
>>> GrepPdf = WrapCommand ('های grep PDF)
>>> توالت = WrapCommand ('WC -l')
>>> Wc.stdin = GrepPdf
>>> GrepPdf.stdin = L ها
>>> Wc.start ()
>>> مسائل #Do
...
>>> Wc.join ()
>>> Wc.results
(5 N '،' ')
املاک "نتایج" یک تاپل است (stdoutdata، stderrdata)
شما همچنین می توانید آن را انجام دهید به این ترتیب:
>>> L ها = WrapCommand ('LS -l | های grep در قالب PDF | WC -l'، پوسته = واقعی)
>>> Ls.start ()
>>> مسائل #Do
>>> Ls.join ()
>>> Ls.results [0]
'5 N'
شما نیاز به مشخص 'پوسته = واقعی' زمانی که از دستور شما مایل به اجرا است که در واقع به پوسته ساخته شده است. به عنوان مثال: در ویندوز اگر شما استفاده از دستورات مانند 'دیر' یا 'کپی' ساخته شده است: http://docs.python.org/library/subprocess.html#subprocess.Popen
هدف از انجام آن را در یک موضوع است که دستورات فوق را ممکن است چند ساعت طول بکشد، و شما می خواهید به انجام کارهای دیگر در همین حال. شما می توانید روند هنوز هم با در حال اجرا:
>>> Wc.is_alive ()
غلط
'واقعی' خواهد بود اگر هنوز هم در حال اجرا بازگشت. به فسخ آن قبل از موعد مقرر (یعنی آن به بن بست رسیده) شما باید "خاتمه () '،' کشتن () 'یا' روش (سیگنال) send_signal که هستند خود زبان. هنگامی که شما می خواهید برای موضوع برای پایان دادن به صبر کنید، استفاده از روش 'ملحق ()': http://docs.python.org/library/threading.html#threading.Thread.join
شما می خواهید برای راه اندازی دستورات پارتی زیر بدون نخ:
[کاربر @ localhost به ~] $ LS -l | های grep در قالب PDF | WC -l
5
در اینجا این است که چگونه شما می توانید آن را انجام دهید:
>>> L ها = WrapCommand ('LS -l')
>>> GrepPdf = WrapCommand ('های grep PDF)
>>> توالت = WrapCommand ('WC -l')
>>> WC (GrepPdf (LS))
'5 N'
اجتناب از انجام این کار برای فرآیندهای که در آن مقدار زیادی از داده ها بین هر دستور لوله کشی.
در عوض، این کار را انجام این روش:
>>> L ها = WrapCommand ('LS -l | های grep در قالب PDF | WC -l'، پوسته = واقعی)
>>> L ها ()
'5 N'
ترجیح می دهند از روش رشته به جای در صورتی که این ممکن است زمان زیادی طول بکشد و به شما که می خواهید به انجام کارهای دیگر در همین حال.
شما می توانید پوسته دیگر برای اجرای دستورات مشخص:
>>> L ها = WrapCommand ('LS، پوسته = واقعی، = اجرایی' C: /windows/System32/WindowsPowerShell/v1.0/powershell.exe ')
>>> L ها چاپ ()
& nbsp؛ در دایرکتوری: C: کاربر ایو python_tests
حالت LastWriteTime نام طول
---- ------------- ------ ----
-a --- 27/01/2011 00:14 7006 commandwrapper.py
-a --- 27/01/2011 00:15 7048 commandwrapper.pyc
http://docs.python.org/reference/compound_stmts.html#grammar-token-with_item: شما همچنین می توانید مدیریت متن (with_item) استفاده
به عنوان مثال:
>>> با WrapCommand ('LS -l') به عنوان L ها:
... با WrapCommand ('PDF های grep') به عنوان GrepPdf:
... با WrapCommand ('WC -l') را به عنوان توالت:
... Wc.stdin = GrepPdf
... GrepPdf.stdin = L ها
... Wc.start ()
... مسائل #Do
... Wc.join ()
...
>>> Wc.results
(5 N '،' ')
همچنین شما می توانید به سادگی می خواهید به یک Objet خرید فرزند:
>>> LS = WrapCommand ('LS -l')
>>> lscmd = ls.makeCmd ()
>>>
شی بازگشت (lscmd در مثال بالا) یک شی subprocess.Popen استاندارد است
WrapOnceCommand همان WrapCommand است، اما ویژگی CMD است که یک شی subprocess.Popen خواهد شد یک بار ایجاد شده و برای همه بنابراین متد اجرا (یا شی) تنها می تواند یک بار به نام. هدف آن برای راه اندازی یک دستور در یک موضوع، و به این دستور به راحتی شروع / متوقف از جاهای دیگر
چه جدید در این نسخه است:.
اطلاعات تماس نویسنده تغییر است.
جدید در نسخه 0.4 است:
هشدار اینجا هستید:: http://docs.python.org/reference/datamodel.html#object.__del__
و becasue اشیاء تخریب که در آن را automaticaly توسط زباله روب حذف نه به عنوان در اینجا شرح: http://docs.python.org/library/gc.html#gc.garbage که می تواند افزایش استفاده از حافظه شود.
مورد نیاز:
پایتون
نظر یافت نشد