আরগপারস মডিউল কোনও যুক্তি ছাড়াই বিকল্প যুক্ত করবেন কীভাবে?


165

ব্যবহার করে একটি স্ক্রিপ্ট তৈরি করেছি argparse

স্ক্রিপ্টটির জন্য একটি বিকল্প হিসাবে একটি কনফিগারেশন ফাইলের নাম নেওয়া দরকার এবং ব্যবহারকারীরা নির্দিষ্ট করে স্ক্রিপ্টটি পুরোপুরি এগিয়ে নিতে হবে বা কেবল এটির অনুকরণ করতে হবে কিনা তা নির্দিষ্ট করে দিতে পারে।

পাস করা আরোগুলি: ./script -f config_file -sবা ./script -f config_file

এটি -f কনফিগারেশন ফাইলের অংশের জন্য ঠিক আছে তবে এটি আমাকে -s এর পক্ষে যুক্তি জিজ্ঞাসা করে যা nচ্ছিক এবং কোনওটি অনুসরণ করা উচিত নয়।

আমি এটি চেষ্টা করেছি:

parser = argparse.ArgumentParser()
parser.add_argument('-f', '--file')
#parser.add_argument('-s', '--simulate', nargs = '0')
args = parser.parse_args()
if args.file:
    config_file = args.file
if args.set_in_prod:
        simulate = True
else:
    pass

নিম্নলিখিত ত্রুটিগুলি সহ:

File "/usr/local/lib/python2.6/dist-packages/argparse.py", line 2169, in _get_nargs_pattern
nargs_pattern = '(-*%s-*)' % '-*'.join('A' * nargs)
TypeError: can't multiply sequence by non-int of type 'str'

''পরিবর্তে একই ভুল 0

উত্তর:



96

একটি বিকল্প যে কোনো মূল্যই প্রয়োজন, তৈরি করতে সেট action [ডক্স] এটা এর 'store_const', 'store_true'বা'store_false'

উদাহরণ:

parser.add_argument('-s', '--simulate', action='store_true')

হ্যালো, আপনার উত্তরের জন্য ধন্যবাদ আমি ডকটিতে বর্ণিত হিসাবে চেষ্টা করেছি: >>> parser.add_argument ('- foo', '-f', ক্রিয়া = 'store_true') __SoreTrueAction (বিকল্প_স্ট্রিংস = ['- foo', '-f'], গন্তব্য = 'foo', সংকীর্ণগুলি = 0, কনস্ট = সত্য, ডিফল্ট = মিথ্যা, প্রকার = কিছুই নয়, পছন্দগুলি = কোনওটি নয়, সহায়তা = কিছুই নয়, মেটাভার = কিছুই নেই) >>> পার্সার.পার্স_আর্গস () নেমস্পেস (foo = মিথ্যা) >> > মুদ্রণ args.foo ট্রেসব্যাক (সর্বশেষতম কল শেষ): ফাইল "<stdin>", লাইন 1, <মডুল> অ্যাট্রিবিউটার এয়ারে: 'নেমস্পেস' অবজেক্টটির 'foo' >> এর কোনও বৈশিষ্ট্য নেই >>> `এটি কাজ করে বলে মনে হয় না; অ্যাসাইনমেন্টের পরে কীভাবে মান পুনরুদ্ধার করতে হয় তা আমি জানি না। আমাকে সাহায্য করার জন্য ধন্যবাদ!
ফিলিপ

@philippe: আপনি বাঁধে ভুলে গেছি থাকেন parser.parse_args()ফিরে মান args stackoverflow.com/questions/5262702/...
JFS

@ ফিলিপ: args = parser.parse_args()যেমন আপনার কোডটিতে ইতিমধ্যে রয়েছে। আপনাকে কেবল মন্তব্য করা লাইনটি প্রতিস্থাপন করতে হবে এবং তারপরে আপনি এর সাথে মানটি অ্যাক্সেস করতে পারবেনargs.simulate
ফেলিক্স ক্লিং
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.