انجمنهای فارسی اوبونتو
کمک و پشتیبانی => برنامهسازی => نویسنده: thmkhtry در 03 تیر 1402، 05:36 بظ
-
سلام،
1. من میخواهم وقتی به صورت:
...
i=input("enter:)
..
مینویسم خروجی به صورت:
enter:print("hi")
'hi'
بگیرم یعنی میخواهم وقتی متغیر ورودی ورودی ای دریافت کرد که دستورات پایتون بود آن را اجرا کند.
همچنین نمیخواهم از حالت زیر استفاده کنم چون شلوغ میشود:
if i=="exit()":
exit()
چیکار کنم؟
-----------------------------------------------------------------------
2. میخواهم کاری کنم که وقتی مثلا کاربر داخل متغیر ورودی
( برای مثال i=input("enter:")
)
مثلا نوشت ./example.py فایل example.py اجرا شود.
چه کار کنم؟
-
خب الان شما دوتا چیز میخواین. اگر میخواین دستورات پایتون اجرا بشن، از exec میتونید استفاده کنید. مثل:
i = input("Enter:")
exec(i)
اگر هم میخواین دستورات command line اجرا بشن، از os.system میتونید استفاده کنید.
ادیت: میشه لطفا این محدودیت اکانتمو بردارید؟ مرسی (:
-
با تشکر از شما اولین سوالم حل شد ولی سوال دوم: میخوام کلا بشه باهاش پایتون فایل ها را اجرا کرد
ادیت: منم محدودیتی دارم.
-
برای اجرای یک فایل پایتون دیگر:
with open("example.py") as f:
exec(f.read())
-
فکر کنم کار اول که میخواهید انجام بدید، اسمش توی برنامهنویسی reflection باشه.
-
من گیج شدم :( :( میخوای از طریق bash وررودی بدی . از طریق پایتون خروجی بگیری ؟؟؟ یا فقط با پایتون میخوای ورودی و خروجی بگیری ؟؟؟
منظور بنده این هست که یک اسکریپت نهایتا ۵۰ خطی بنویسد با بش که اینکار رو انجام بده ( از کاربر ورودی بگیره و ورودی گرفته شده رو و دستورات مورد نظرو به زبان پایتون بده)
-
من گیج شدم :( :( میخوای از طریق bash وررودی بدی . از طریق پایتون خروجی بگیری ؟؟؟ یا فقط با پایتون میخوای ورودی و خروجی بگیری ؟؟؟
فقط با پایتون
-
به نظرم دنبال eval هستی.
a = input()
eval(a)
-
به نظرم دنبال eval هستی.
a = input()
eval(a)
این بهتر کار میکنه یا exec؟
-
فکر می کنی اگر یکی از اون یکی بهتر کار می کرد ، هر دو رو نگه می داشتن؟ یا اونی که بدتر کار می کنه رو می ذاشتن کنار و از بهتره استفاده می کردن؟ (:
خلاصهاش کنیم، eval روی یک خط کار می کنه (چیزی که تو پرسیدی) و exec روی کدهای چند خطی هم کار می کنه.