প্রয়োজনীয়তা পর্যালোচনা
- ব্যবহার
argparse
(আমি এটিকে উপেক্ষা করব)
- এক বা দুটি ক্রিয়া কল করার অনুমতি দিন (কমপক্ষে একটি প্রয়োজনীয়)।
- পাইথোনিক দ্বারা চেষ্টা করুন (আমি বরং এটি "পসিক্স" -র মতো বলব)
কমান্ড লাইনে থাকার সময় কিছু অন্তর্নিহিত প্রয়োজনীয়তাও রয়েছে:
- ব্যবহারকারীর কাছে এমনভাবে ব্যবহারটি ব্যাখ্যা করুন যা বোঝা সহজ
- বিকল্পগুলি alচ্ছিক হতে হবে
- পতাকা এবং বিকল্পগুলি নির্দিষ্ট করার অনুমতি দিন
- অন্যান্য পরামিতিগুলির সাথে সংযুক্ত করার অনুমতি দিন (যেমন ফাইলের নাম বা নাম)।
docopt
(ফাইল managelog.py
) ব্যবহার করে নমুনা সমাধান :
"""Manage logfiles
Usage:
managelog.py [options] process -- <logfile>...
managelog.py [options] upload -- <logfile>...
managelog.py [options] process upload -- <logfile>...
managelog.py -h
Options:
-V, --verbose Be verbose
-U, --user <user> Username
-P, --pswd <pswd> Password
Manage log file by processing and/or uploading it.
If upload requires authentication, you shall specify <user> and <password>
"""
if __name__ == "__main__":
from docopt import docopt
args = docopt(__doc__)
print args
এটি চালানোর চেষ্টা করুন:
$ python managelog.py
Usage:
managelog.py [options] process -- <logfile>...
managelog.py [options] upload -- <logfile>...
managelog.py [options] process upload -- <logfile>...
managelog.py -h
সহায়তাটি দেখান:
$ python managelog.py -h
Manage logfiles
Usage:
managelog.py [options] process -- <logfile>...
managelog.py [options] upload -- <logfile>...
managelog.py [options] process upload -- <logfile>...
managelog.py -h
Options:
-V, --verbose Be verbose
-U, --user <user> Username
-P, --pswd <pswd> P managelog.py [options] upload -- <logfile>...
Manage log file by processing and/or uploading it.
If upload requires authentication, you shall specify <user> and <password>
এবং এটি ব্যবহার করুন:
$ python managelog.py -V -U user -P secret upload -- alfa.log beta.log
{'--': True,
'--pswd': 'secret',
'--user': 'user',
'--verbose': True,
'-h': False,
'<logfile>': ['alfa.log', 'beta.log'],
'process': False,
'upload': True}
সংক্ষিপ্ত বিকল্প short.py
আরও ছোট আকারের হতে পারে:
"""Manage logfiles
Usage:
short.py [options] (process|upload)... -- <logfile>...
short.py -h
Options:
-V, --verbose Be verbose
-U, --user <user> Username
-P, --pswd <pswd> Password
Manage log file by processing and/or uploading it.
If upload requires authentication, you shall specify <user> and <password>
"""
if __name__ == "__main__":
from docopt import docopt
args = docopt(__doc__)
print args
ব্যবহার এর মতো দেখাচ্ছে:
$ python short.py -V process upload -- alfa.log beta.log
{'--': True,
'--pswd': None,
'--user': None,
'--verbose': True,
'-h': False,
'<logfile>': ['alfa.log', 'beta.log'],
'process': 1,
'upload': 1}
দ্রষ্টব্য, "প্রক্রিয়া" এবং "আপলোড" কীগুলির জন্য বুলিয়ান মানগুলির পরিবর্তে কাউন্টার রয়েছে।
দেখা যাচ্ছে, আমরা এই শব্দগুলির সদৃশ প্রতিরোধ করতে পারি না:
$ python short.py -V process process upload -- alfa.log beta.log
{'--': True,
'--pswd': None,
'--user': None,
'--verbose': True,
'-h': False,
'<logfile>': ['alfa.log', 'beta.log'],
'process': 2,
'upload': 1}
সিদ্ধান্তে
ভাল কমান্ড লাইন ইন্টারফেস ডিজাইন কখনও কখনও চ্যালেঞ্জ হতে পারে।
কমান্ড লাইন ভিত্তিক প্রোগ্রামের একাধিক দিক রয়েছে:
- কমান্ড লাইন ভাল ডিজাইন
- সঠিক পার্সার নির্বাচন / ব্যবহার করা
argparse
অনেক প্রস্তাব দেয়, তবে সম্ভাব্য পরিস্থিতিগুলিকে সীমাবদ্ধ করে এবং খুব জটিল হয়ে উঠতে পারে।
সঙ্গে docopt
কিছু অনেক খাটো যখন পাঠযোগ্যতা সংরক্ষণের এবং নমনীয়তা উচ্চ ডিগ্রী প্রস্তাব যান। আপনি যদি অভিধান থেকে পার্স করা যুক্তিগুলি পরিচালনা করতে এবং ম্যানুয়ালি (বা অন্য লাইব্রেরি দ্বারা আহৃত) রূপান্তরগুলি (পূর্ণসংখ্যায়, ফাইলগুলি খোলার জন্য schema
) কিছু করেন তবে আপনি docopt
কমান্ড লাইন পার্সিংয়ের জন্য উপযুক্ত find
-x
সর্বজনীনভাবে একটি পতাকা এবং .চ্ছিক।-
এটি প্রয়োজন হলে কাটা ।