আমি "--ফু ট্রু" বা "--ফু ফালস" হিসাবে লিখিত বুলিয়ান কমান্ড-লাইন যুক্তিগুলি পার্স করতে আরগপার্স ব্যবহার করতে চাই। উদাহরণ স্বরূপ:
my_program --my_boolean_flag False
যাইহোক, নিম্নলিখিত পরীক্ষার কোডটি আমার যা ইচ্ছা তা করে না:
import argparse
parser = argparse.ArgumentParser(description="My parser")
parser.add_argument("--my_bool", type=bool)
cmd_line = ["--my_bool", "False"]
parsed_args = parser.parse(cmd_line)
দুঃখের বিষয়, parsed_args.my_bool
মূল্যায়ন True
। আমি রূপান্তরিত cmd_line
হওয়ার পরেও এই ঘটনাটি ঘটে ["--my_bool", ""]
, যা অবাক করে দেয়, যেহেতু এই বিষয়ে bool("")
অবহিত হয় False
।
আমি কিভাবে argparse বিশ্লেষণ করতে পেতে পারেন "False"
, "F"
এবং তাদের ছোট হাতের হতে রূপগুলো False
?
parser.add_argument('--feature', dest='feature', type=lambda x:bool(distutils.util.strtobool(x)))
। বিকল্পটি ব্যবহার করা হলে, এই সমাধানটি bool
মান True
বা এর মান সহ একটি প্রকারের বিষয়টি নিশ্চিত করবে False
। অপশনটি ব্যবহার না করলে আপনি পাবেন None
। ( distutils.util.strtobool(x)
অন্য একটি স্ট্যাকওভারফ্লো প্রশ্ন থেকে )
parser.add_argument('--my_bool', action='store_true', default=False)
parser.add_argument('--feature', dest='feature', default=False, action='store_true')
। এই সমাধান জনিত করবে সবসময় একটি পেতেbool
মান টাইপTrue
বাFalse
। (এই সমাধানটির একটি প্রতিবন্ধকতা রয়েছে: আপনার বিকল্পের অবশ্যই একটি ডিফল্ট মান থাকতে হবে))