টি এল; ডিআর
nargs
বিকল্প বা বিকল্পের 'append'
সেটিংস ব্যবহার করুন action
(আপনি কীভাবে ব্যবহার করতে চান ব্যবহারকারী ইন্টারফেসটি তার উপর নির্ভর করে)।
nargs
parser.add_argument('-l','--list', nargs='+', help='<Required> Set flag', required=True)
# Use like:
# python arg.py -l 1234 2345 3456 4567
nargs='+'
1 বা ততোধিক আর্গুমেন্ট nargs='*'
নেয়, শূন্য বা আরও বেশি লাগে।
পরিশেষে যোগ
parser.add_argument('-l','--list', action='append', help='<Required> Set flag', required=True)
# Use like:
# python arg.py -l 1234 -l 2345 -l 3456 -l 4567
সঙ্গে append
আপনি প্রদান বিকল্প একাধিক বার তালিকা বিল্ড আপ।
ব্যবহার করবেন না type=list
!!! - বোধহয় কোন অবস্থা যেখানে আপনি ব্যবহার করতে চান হবে type=list
সঙ্গে argparse
। কখনো।
আসুন আসুন আমরা আরও কিছুটা আলাদাভাবে দেখে নিই যে কেউ এটির চেষ্টা করতে পারে এবং শেষ ফলাফল।
import argparse
parser = argparse.ArgumentParser()
# By default it will fail with multiple arguments.
parser.add_argument('--default')
# Telling the type to be a list will also fail for multiple arguments,
# but give incorrect results for a single argument.
parser.add_argument('--list-type', type=list)
# This will allow you to provide multiple arguments, but you will get
# a list of lists which is not desired.
parser.add_argument('--list-type-nargs', type=list, nargs='+')
# This is the correct way to handle accepting multiple arguments.
# '+' == 1 or more.
# '*' == 0 or more.
# '?' == 0 or 1.
# An int is an explicit number of arguments to accept.
parser.add_argument('--nargs', nargs='+')
# To make the input integers
parser.add_argument('--nargs-int-type', nargs='+', type=int)
# An alternate way to accept multiple inputs, but you must
# provide the flag once per input. Of course, you can use
# type=int here if you want.
parser.add_argument('--append-action', action='append')
# To show the results of the given option to screen.
for _, value in parser.parse_args()._get_kwargs():
if value is not None:
print(value)
আপনি আশা করতে পারেন আউটপুট এখানে:
$ python arg.py --default 1234 2345 3456 4567
...
arg.py: error: unrecognized arguments: 2345 3456 4567
$ python arg.py --list-type 1234 2345 3456 4567
...
arg.py: error: unrecognized arguments: 2345 3456 4567
$ # Quotes won't help here...
$ python arg.py --list-type "1234 2345 3456 4567"
['1', '2', '3', '4', ' ', '2', '3', '4', '5', ' ', '3', '4', '5', '6', ' ', '4', '5', '6', '7']
$ python arg.py --list-type-nargs 1234 2345 3456 4567
[['1', '2', '3', '4'], ['2', '3', '4', '5'], ['3', '4', '5', '6'], ['4', '5', '6', '7']]
$ python arg.py --nargs 1234 2345 3456 4567
['1234', '2345', '3456', '4567']
$ python arg.py --nargs-int-type 1234 2345 3456 4567
[1234, 2345, 3456, 4567]
$ # Negative numbers are handled perfectly fine out of the box.
$ python arg.py --nargs-int-type -1234 2345 -3456 4567
[-1234, 2345, -3456, 4567]
$ python arg.py --append-action 1234 --append-action 2345 --append-action 3456 --append-action 4567
['1234', '2345', '3456', '4567']
টেকওয়েস :
- ব্যবহার করুন
nargs
বাaction='append'
nargs
ব্যবহারকারীর দৃষ্টিকোণ থেকে আরও সহজ হতে পারে, তবে অবস্থানগত আর্গুমেন্ট থাকলে এটি অনর্থক হতে পারে কারণ অবস্থানগত যুক্তিটি argparse
কী হওয়া উচিত এবং কোনটির সাথে সম্পর্কিত তা বলতে পারে না nargs
; আপনার যদি অবস্থানগত যুক্তি থাকে তবে action='append'
আরও ভাল পছন্দ হতে পারে।
- যদি উপরে সত্য শুধু
nargs
দেওয়া হয় '*'
, '+'
অথবা '?'
। আপনি যদি একটি পূর্ণসংখ্যার নম্বর সরবরাহ করেন (যেমন 4
) তবে বিকল্পগুলির সাথে nargs
অবস্থানগত আর্গুমেন্টগুলি মিশ্রিত করতে কোনও সমস্যা argparse
হবে না কারণ বিকল্পটির জন্য ঠিক কতগুলি মান আশা করা উচিত তা জানতে পারবেন।
- কমান্ড লাইন 1 এ উদ্ধৃতিগুলি ব্যবহার করবেন না
- ব্যবহার করবেন না
type=list
, কারণ এটি তালিকার একটি তালিকা ফিরে আসবে
- এটি ঘটে কারণ হুডের নীচে প্রতিটি পৃথক প্রদত্ত যুক্তি আপনাকে আপনার নির্বাচিত যুক্তিকে বাধ্য করার জন্য
argparse
মানটি ব্যবহার করে , সমস্ত যুক্তির সমষ্টি নয়।type
type
type=int
ইনটগুলির তালিকা পেতে (বা যা কিছু হোক) আপনি (বা যাই হোক না কেন) ব্যবহার করতে পারেন
1 : আমি সাধারণভাবে বলতে চাই না .. আমার অর্থ হল একটি তালিকা পাস করারargparse
জন্য কোট ব্যবহার করা আপনি যা চান তা নয়।