পাইথন আরগপারস: ডিফল্ট মান বা নির্দিষ্ট মান


174

আমার কাছে একটি alচ্ছিক যুক্তি থাকতে হবে যা একটি মানতে ডিফল্ট হবে কেবলমাত্র পতাকাটি যদি কোনও মান নির্দিষ্ট না করে উপস্থিত থাকে তবে ব্যবহারকারী যদি কোনও মান নির্দিষ্ট করে দেয় তবে ডিফল্টের পরিবর্তে একটি ব্যবহারকারী-নির্দিষ্ট মান সংরক্ষণ করুন। ইতিমধ্যে কি এর জন্য কোনও ক্রিয়া উপলব্ধ?

একটি উদাহরণ:

python script.py --example
# args.example would equal a default value of 1
python script.py --example 2
# args.example would equal a default value of 2

আমি একটি ক্রিয়া তৈরি করতে পারি, তবে এটি করার কোনও বিদ্যমান উপায় আছে কিনা তা দেখতে চেয়েছিলাম।

উত্তর:


272
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--example', nargs='?', const=1, type=int)
args = parser.parse_args()
print(args)

% test.py 
Namespace(example=None)
% test.py --example
Namespace(example=1)
% test.py --example 2
Namespace(example=2)

  • nargs='?' মানে 0-বা -1 টি আর্গুমেন্ট
  • const=1 0 টি আর্গুমেন্ট থাকলে ডিফল্ট সেট করে
  • type=int যুক্তিকে ইনট-এ রূপান্তরিত করে

যদি আপনি নির্দিষ্ট না করেও 1 test.pyতে সেট করতে চান তবে অন্তর্ভুক্ত করুন । যে, সঙ্গেexample--exampledefault=1

parser.add_argument('--example', nargs='?', const=1, type=int, default=1)

তারপর

% test.py 
Namespace(example=1)

স্ট্রিং দিয়ে এটি কীভাবে করবেন? আমার "" ডিফল্ট হিসাবে খালি স্ট্রিং) এবং "" (ব্যবহারকারীর দ্বারা খালি স্ট্রিং) এর পার্থক্য নিয়ে একটি দ্বিধা রয়েছে। এখনকার কোডে আমি ডিফল্ট ব্যবহার করছি এবং যেহেতু আমাকে কিছু অপিপি করা দরকার, আমার কাছে এই জাতীয় কিছু রয়েছে self.foo = (args.bar or some_else_source).upper()। এটি নন অবজেক্ট এএএএআইইউসি-র উপর ব্রেক হবে।
0

16

আসলে, আপনাকে কেবল এই স্ক্রিপ্টের মতো defaultযুক্তিটি ব্যবহার করতে হবে :add_argumenttest.py

import argparse

if __name__ == '__main__':

    parser = argparse.ArgumentParser()
    parser.add_argument('--example', default=1)
    args = parser.parse_args()
    print(args.example)

test.py --example
% 1
test.py --example 2
% 2

বিশদ এখানে


7

মধ্যে পার্থক্য:

parser.add_argument("--debug", help="Debug", nargs='?', type=int, const=1, default=7)

এবং

parser.add_argument("--debug", help="Debug", nargs='?', type=int, const=1)

এইভাবে:

myscript.py => ডিবাগ প্রথম ক্ষেত্রে 7 (ডিফল্ট থেকে) এবং দ্বিতীয়টিতে "কিছুই নয়"

myscript.py --debug => ডিবাগ প্রতিটি ক্ষেত্রে 1

myscript.py --debug 2 => প্রতিটি ক্ষেত্রে ডিবাগ 2 হয়

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.