উত্তর:
আপনি স্ক্রিপ্টে যা খুঁজছেন তা হ'ল কল sys.exit()। এই পদ্ধতির যুক্তিটি প্রস্থান কোড হিসাবে পরিবেশে ফিরে আসে।
এটি সম্ভবত সম্ভবত স্ক্রিপ্টটি প্রস্থান পদ্ধতিটিকে কল করবে না এবং এটি 0 টি ডিফল্ট প্রস্থান কোড।
এর জন্য ডকুমেন্টেশন থেকেsys.exit :
Argumentচ্ছিক আর্গুমেন্টটি আর্গুমেন্টটি প্রস্থান স্থিতি (শূন্যকে ডিফল্ট করা) বা অন্য ধরণের অবজেক্ট প্রদান করতে পারে ger যদি এটি একটি পূর্ণসংখ্যা হয় তবে শূন্যটিকে "সফল সমাপ্তি" হিসাবে বিবেচনা করা হয় এবং কোনও ননজারো মান শাঁস এবং এর মতো দ্বারা "অস্বাভাবিক সমাপ্তি" হিসাবে বিবেচিত হয়। বেশিরভাগ সিস্টেমে এটি 0-127 এর মধ্যে থাকতে হয় এবং অন্যথায় অপরিজ্ঞাত ফলাফল দেয়। কিছু প্রস্থানের নির্দিষ্ট প্রস্থান কোডগুলিকে নির্দিষ্ট অর্থ নির্ধারণের জন্য একটি সম্মেলন থাকে তবে এগুলি সাধারণত অনুন্নত হয়; ইউনিক্স প্রোগ্রামগুলি সাধারণত কমান্ড লাইন সিনট্যাক্স ত্রুটির জন্য 2 এবং অন্যান্য সমস্ত ধরণের ত্রুটির জন্য 1 ব্যবহার করে।
একটি উদাহরণ যেখানে প্রস্থান কোডগুলি ব্যবহৃত হয় তা হ'ল শেল স্ক্রিপ্ট। ব্যাশে আপনি $?শেষ প্রস্থান স্থিতির জন্য বিশেষ চলকটি পরীক্ষা করতে পারেন :
me@mini:~$ python -c ""; echo $?
0
me@mini:~$ python -c "import sys; sys.exit(0)"; echo $?
0
me@mini:~$ python -c "import sys; sys.exit(43)"; echo $?
43
ব্যক্তিগতভাবে আমি /usr/include/asm-generic/errno.h(লিনাক্স সিস্টেমে) আমি খুঁজে পাওয়া প্রস্থান কোডগুলি ব্যবহার করার চেষ্টা করি , তবে আমি জানি না এটি করা ঠিক কি না।
grepএই প্রবণতাটি ভাঙ্গবে তা নোট করুন। অনেক ধন্যবাদ, স্টলম্যান। 12
রেকর্ডের জন্য, আপনি এখানে সংজ্ঞায়িত POSIX মানক প্রস্থান কোডগুলি ব্যবহার করতে পারেন ।
উদাহরণ:
import sys, os
try:
config()
except:
sys.exit(os.EX_CONFIG)
try:
do_stuff()
except:
sys.exit(os.EX_SOFTWARE)
sys.exit(os.EX_OK) # code 0, all ok
exitstatusপাইপিআই প্যাকেজটি দেখুন।
একটি errnoমডিউল রয়েছে যা স্ট্যান্ডার্ড প্রস্থান কোডগুলি সংজ্ঞায়িত করে:
উদাহরণস্বরূপ, অনুমতি অস্বীকার করা হয়েছে ত্রুটি কোড 13 :
import errno, sys
if can_access_resource():
do_something()
else:
sys.exit(errno.EACCES)
errnoএবং errno.h অনুসারে ), তবে একটি প্রস্থান স্থিতি কোড 77 77 (অনুসারে osএবং sysexits.h অনুযায়ী )। পূর্ববর্তীটি যে প্রোগ্রামগুলিকে নির্গত করে সেগুলি অ-মানক ( ডি ফ্যাক্টো ওয়াল জুর ) এবং সঠিকভাবে প্রত্যাশা করা অন্যদের সাথে সুন্দরভাবে খেলবে না।
0 এর প্রস্থান কোডগুলির অর্থ সাধারণত "এখানে কোনও ভুল নেই।" তবে স্ক্রিপ্টের প্রোগ্রামার যদি কনভেনশন অনুসরণ না করে তবে এর অর্থ কী তা বোঝার জন্য আপনাকে উত্সের সাথে পরামর্শ করতে হতে পারে। সাধারণত একটি শূন্য-মান একটি ত্রুটি কোড হিসাবে ফিরে আসে।
উত্তরটি "প্রস্থান কোড শূন্যের অর্থ কী তার উপর নির্ভর করে"
তবে বেশিরভাগ ক্ষেত্রে এর অর্থ "সবকিছু ঠিক আছে"
আমি পসিক্স পছন্দ করি:
সুতরাং, শেলের উপর, আমি টাইপ করব:
python script.py && echo 'OK' || echo 'Not OK'
যদি আমার অজগর স্ক্রিপ্টটি sys.exit(0)শেলটি কল করে তবে 'ঠিক আছে'
যদি আমার অজগর স্ক্রিপ্ট কল করে sys.exit(1)(বা কোনও শূন্য নয় এমন পূর্ণসংখ্যা), শেলটি 'ঠিক আছে না' ফেরত দেয়
শেলটি দিয়ে চালাক হওয়া আপনার প্রস্থান এবং প্রস্থান কোডগুলি কী বোঝায় তা দেখতে আপনার স্ক্রিপ্টের জন্য ডকুমেন্টেশন (বা উত্স) পড়ুন।
অপারেটিং সিস্টেম কমান্ডের প্রস্থান কোড রয়েছে। এতে কিছু উপাদান দেখতে লিনাক্সের প্রস্থান কোডগুলি সন্ধান করুন। প্রোগ্রামটি কাজ করেছে, সমস্যা আছে বা ব্যর্থ হয়েছে কিনা তা নির্ধারণের জন্য শেলটি প্রস্থান কোডগুলি ব্যবহার করে। স্ট্যান্ডার্ড (বা কমপক্ষে সাধারণভাবে ব্যবহৃত) প্রস্থান কোডগুলি তৈরি করার জন্য কিছু প্রচেষ্টা রয়েছে। এই উন্নত শেল স্ক্রিপ্ট পোস্টিং দেখুন See
আমি sys.exit () ব্যবহার না করে প্রস্থান (0) অন্তর্নির্মিত একটি পরিষ্কার শাটডাউন করার পরামর্শ দিচ্ছি
আমি নিশ্চিত না এটি ভাল পরামর্শ কিনা।
সাইট মডিউল (যা প্রারম্ভকালে স্বয়ংক্রিয়ভাবে আমদানি করা হয়, -S কমান্ড-লাইন বিকল্পটি দেওয়া ব্যতীত) অন্তর্নির্মিত নেমস্পেসে বেশ কয়েকটি ধ্রুবক যুক্ত করে। এগুলি ইন্টারেক্টিভ ইন্টারপ্রেটার শেলের জন্য কার্যকর এবং প্রোগ্রামগুলিতে ব্যবহার করা উচিত নয় ।
তারপর:
প্রস্থান (কোড = কোনটি)
যে বিষয়গুলি মুদ্রিত করা হয়, তখন প্রস্থান করার জন্য "ব্যবহার ছেড়ে দিন") বা Ctrl-D (অর্থাত্ EOF) এর মতো একটি বার্তা মুদ্রণ করুন এবং যখন ডাকা হয় তখন নির্দিষ্ট প্রস্থান কোডের সাহায্যে SystemExit বাড়ান।
যদি আমরা এটিকে sys.exit () ডকুমেন্টেশনের সাথে তুলনা করি তবে এটি একই পদ্ধতি ব্যবহার করছে যা SystemExitব্যতিক্রম বাড়িয়ে তুলছে ।
আপনি যদি বহনযোগ্যভাবে স্ট্যান্ডার্ড POSIX প্রস্থান কোড ব্যবহার করতে চান তবে পাইপিআই- exitstatusতে প্যাকেজটি দেখুন ।
প্যাকেজ ইনস্টল করুন:
$ pip install exitstatus
আপনার কোড ব্যবহার করুন:
import sys
from exitstatus import ExitStatus
sys.exit(ExitStatus.success)
স্ক্রিপ্ট লেখকের দ্বারা নির্ধারিত প্রস্থান কোডগুলির কেবলমাত্র অর্থ রয়েছে। ইউনিক্স traditionতিহ্য হ'ল প্রস্থান কোড 0 এর অর্থ 'সাফল্য', অন্য কোনও কিছুই ব্যর্থতা। প্রদত্ত স্ক্রিপ্টের প্রস্থান কোডগুলির অর্থ কী তা নিশ্চিত হওয়ার একমাত্র উপায় হ'ল স্ক্রিপ্টটি নিজেই পরীক্ষা করা।
ব্যতিক্রম হ্যান্ডলারগুলি এবং অন্যান্য জিনিসগুলি কার্যকর করার অনুমতি দেওয়ার জন্য আমি exit(0)বিল্টিনের সাথে ক্লিন শাটডাউনটি ব্যবহার না করে সুপারিশ করছি sys.exit()যা হঠাৎ প্রক্রিয়াটি বন্ধ করে দেয়।
SystemExitউভয় উপায়ে উত্থিত প্রদর্শিত হবে।
os._exit, উভয় উত্থাপন বলে মনে হচ্ছে SystemExit।
sys.exit() করেexit() । তারা উভয়ই একই কাজ করে: একটি SystemExitব্যতিক্রম বাড়াতে । আসলে, exit()ইন্টারেক্টিভ সেশন, না স্ক্রিপ্ট জন্য বোঝানো হয়, তাই ধারণার দিক sys.exit() হল নির্দেশিত অন্যতম। আপনার সাথে বিভ্রান্তি হতে পারে os._exit(), এটি হ'ল আকস্মিকভাবে শেষ হয়।