یک تابع پایتون بنویس که یک دستور سیستم دلخواه را اجرا کند و خروجی STDOUT آن را بهعنوان یک رشته برگرداند.
4.0 بازدید آخرین ویرایش در 221 روز قبل ساعت 01:30 0.0
برای این کار از ماژول استاندارد subprocess استفاده کنید؛ مثلاً subprocess.run با پارامتر stdout=subprocess.PIPE یا capture_output=True و text=True تا خروجی بهصورت رشته بازگردد. خروجی را بازگردانده و وضعیت اجرای دستور (returncode) را بررسی کنید یا در صورت نیاز با timeout از وقوع بنبست جلوگیری کنید. این تکنیک در برنامهنویسی سیستمی و محیطهای Embedded/IoT برای خواندن اطلاعات سختافزار یا لاگها مفید است؛ از استفاده از shell=True مگر در صورت ضرورت خودداری کنید و ورودیها را امن نگه دارید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
نکته مفید این است که با استفاده از subprocess.run و capture_output=True یا stdout=subprocess.PIPE، خروجی STDOUT بهصورت رشته بازمیگردد و میتوانید returncode را بررسی کنید. برای امنیت، از shell=False استفاده کنید و ورودیها را بهطور صحیح اعتبارسنجی کنید تا از تزریق دستورات جلوگیری شود. برای جلوگیری از بنبست، زمان اجرای محدود با timeout تعیین کنید و در صورت وقوع خطا با استثناها مدیریت مناسب انجام دهید. اگر میخواهید خروجیهای stdout وstderr هر دو را بخوانید، میتوانید stderr را هم دریافت کنید یا از capture_output=True استفاده کنید.
گزارش