আপডেট: এই উত্তরে এখনও সমস্যা আছে; উদাহরণস্বরূপ, এটি required
আর্গুমেন্টগুলি পরিচালনা করতে পারে না এবং এর জন্য একটি বিশ্রী কনফিগার সিনট্যাক্স প্রয়োজন। পরিবর্তে, কনফিগারআর্গ পার্স মনে হচ্ছে ঠিক এই প্রশ্নটি যা জিজ্ঞাসা করেছে, এবং এটি একটি স্বচ্ছ, ড্রপ-ইন প্রতিস্থাপন।
বর্তমানের সাথে একটি সমস্যা হ'ল কনফিগার ফাইলে আর্গুমেন্ট অবৈধ থাকলে এটি ত্রুটি করবে না। এখানে একটি ভিন্ন নেতিবাচক সংস্করণ রয়েছে: আপনাকে কীগুলিতে --
বা -
উপসর্গটি অন্তর্ভুক্ত করতে হবে ।
অজগর কোডটি এখানে রয়েছে ( এমআইটি লাইসেন্সের সাথে সংক্ষেপে লিঙ্ক ):
import argparse
import configparser
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument('--config_file', help='config file')
args, left_argv = parser.parse_known_args()
if args.config_file:
with open(args.config_file, 'r') as f:
config = configparser.SafeConfigParser()
config.read([args.config_file])
parser.add_argument('--arg1', help='argument 1')
parser.add_argument('--arg2', type=int, help='argument 2')
for k, v in config.items("Defaults"):
parser.parse_args([str(k), str(v)], args)
parser.parse_args(left_argv, args)
print(args)
এখানে একটি কনফিগার ফাইলের উদাহরণ রয়েছে:
[Defaults]
--arg1=Hello!
--arg2=3
এখন, চলছে
> python main.py --config_file config_correct.conf --arg1 override
Namespace(arg1='override', arg2=3, config_file='test_argparse.conf')
তবে, আমাদের কনফিগারেশনের ফাইলটিতে যদি ত্রুটি থাকে:
--arg1=Hello!
--arg2='not an integer!'
স্ক্রিপ্টটি চালানো তত্ক্ষেত্র হিসাবে ত্রুটি তৈরি করবে:
> python main.py --config_file config_invalid.conf --arg1 override
usage: test_argparse_conf.py [-h] [--config_file CONFIG_FILE] [--arg1 ARG1]
[--arg2 ARG2]
main.py: error: argument --arg2: invalid int value: 'not an integer!'
মূল parser.parse_args
ক্ষতিটি হ'ল এটি আর্গুমেন্ট পার্সার থেকে ত্রুটি পরীক্ষা করার জন্য কিছুটা হ্যাকলি ব্যবহার করে তবে আমি এর কোনও বিকল্প সম্পর্কে অবগত নই।