python - সহজ যুক্তিবিজ্ঞান উদাহরণ চেয়েছিলেন: 1 যুক্তি, 3 ফলাফল




argparse (6)

অন্যরা কী বলেছে তা যোগ করার জন্য:

আমি সাধারণত একটি পরিবর্তনশীল নাম উল্লেখ করতে 'dest' পরামিতিটি ব্যবহার করতে পছন্দ করি এবং তারপর গ্লোবাল নেমস্পেসে সেই ভেরিয়েবলগুলিকে রাখতে 'globals ()। Update ()' ব্যবহার করুন।

ব্যবহার:

$ python script.py -i "Hello, World!"

কোড:

...
parser.add_argument('-i', '--input', ..., dest='inputted_variable',...)
globals().update(vars(parser.parse_args()))
...
print(inputted_variable) # Prints "Hello, World!"

Argparse পাইথন মডিউলের জন্য documentation , চমৎকার যখন আমি নিশ্চিত, আমার ক্ষুদ্র beginner মস্তিষ্কের জন্য এখন ডান উপলব্ধি জন্য অনেক। আমি কমান্ড লাইনের গণিত বা স্ক্রিনে বিন্যাসকরণ লাইনগুলির সাথে মধ্যম বা বিকল্প অক্ষরগুলি পরিবর্তন করার প্রয়োজন নেই। আমি যা করতে চাই তা হল "যদি আর্গ একটি হয় তবে এটি করুন, যদি বি এটি করে তবে উপরের যেকোনও উপায়ে সহায়তা এবং ছাড়তে না পারলে"


আপনি plac ব্যবহার করতে পারেন ( argparse কাছাকাছি একটি মোড়ক)।

একটি বোনাস হিসাবে এটি সুগন্ধি সাহায্য নির্দেশাবলী তৈরি করে - নিচে দেখুন।

উদাহরণ স্ক্রিপ্ট:

#!/usr/bin/env python3
def main(
    arg: ('Argument with two possible values', 'positional', None, None, ['A', 'B'])
):
    """General help for application"""
    if arg == 'A':
        print("Argument has value A")
    elif arg == 'B':
        print("Argument has value B")

if __name__ == '__main__':
    import plac
    plac.call(main)

উদাহরণ আউটপুট:

সরবরাহ করা কোন আর্গুমেন্ট - example.py :

usage: example.py [-h] {A,B}
example.py: error: the following arguments are required: arg

অপ্রত্যাশিত যুক্তি সরবরাহ করা হয়েছে - example.py C :

usage: example.py [-h] {A,B}
example.py: error: argument arg: invalid choice: 'C' (choose from 'A', 'B')

সঠিক যুক্তি সরবরাহ করা হয়েছে - example.py A :

Argument has value A

সম্পূর্ণ সহায়তা মেনু (স্বয়ংক্রিয়ভাবে জেনারেট) - example.py -h :

usage: example.py [-h] {A,B}

General help for application

positional arguments:
  {A,B}       Argument with two possible values

optional arguments:
  -h, --help  show this help message and exit

সংক্ষিপ্ত ব্যাখ্যা:

যুক্তিটির নামটি সাধারণত প্যারামিটারের নাম সমান ( arg )।

arg প্যারামিটারের পরে tuple টীকা নিম্নলিখিত অর্থ আছে:

  • বর্ণনা ( Argument with two possible values )
  • যুক্তি প্রকার - 'পতাকা', 'বিকল্প' বা 'অবস্থানগত' ( positional )
  • সংক্ষেপে ( None )
  • যুক্তি মান টাইপ - যেমন। ভাসা, স্ট্রিং ( None )
  • পছন্দসই সংকলন সেট ( ['A', 'B'] )

ডকুমেন্টেশন:

plac ব্যবহার সম্পর্কে আরও জানতে তার মহান ডকুমেন্টেশন চেক আউট:

Plac: কমান্ড লাইন সহজ উপায় পার্সিং


এখানে আমি আমার শেখার প্রকল্প ধন্যবাদ প্রধানত @ DMH করতে এসেছি ...

ডেমো কোড:

import argparse

def main():
    parser = argparse.ArgumentParser()
    parser.add_argument('-f', '--flag', action='store_true', default=False)  # can 'store_false' for no-xxx flags
    parser.add_argument('-r', '--reqd', required=True)
    parser.add_argument('-o', '--opt', default='fallback')
    parser.add_argument('arg', nargs='*') # use '+' for 1 or more args (instead of 0 or more)
    parsed = parser.parse_args()
    # NOTE: args with '-' have it replaced with '_'
    print('Result:',  vars(parsed))
    print('parsed.reqd:', parsed.reqd)

if __name__ == "__main__":
    main()

এটি উন্নত এবং অনলাইন উপলব্ধ হতে পারে: command-line.py

এই কোডটি একটি command-line-demo.sh দিতে স্ক্রিপ্ট: command-line-demo.sh


মূল প্রশ্ন আমার বোঝার দুইগুণ হয়। প্রথমত, সম্ভাব্য সম্ভাব্য যুক্তিবিজ্ঞানের উদাহরণ অনুসারে, আমি অবাক হয়েছি যে আমি এখানে এটি দেখেছি না। অবশ্যই, মৃত-সরল হতে, এটি সামান্য শক্তি সহ সমস্ত ওভারহেড, তবে এটি আপনাকে শুরু হতে পারে।

import argparse

parser = argparse.ArgumentParser()
parser.add_argument("a")
args = parser.parse_args()

if args.a == 'magic.name':
    print 'You nailed it!'

কিন্তু এই অবস্থানগত যুক্তি এখন প্রয়োজন হয়। এই প্রোগ্রামটি চালানোর সময় আপনি যদি এটি ছেড়ে যান, তবে আপনি অনুপস্থিত আর্গুমেন্টগুলির বিষয়ে একটি ত্রুটি পাবেন। এই মূল প্রশ্ন দ্বিতীয় অংশ আমাকে বাড়ে। ম্যাট উইল্কি একটি নামযুক্ত লেবেল ছাড়াও একটি একক ঐচ্ছিক যুক্তি চাইছেন (ওপেন লেবেল)। আমার পরামর্শ নিম্নরূপ কোড সংশোধন করা হবে:

...
parser.add_argument("a", nargs='?', default="check_string_for_empty")
...
if args.a == 'check_string_for_empty':
    print 'I can tell that no argument was given and I can deal with that here.'
elif args.a == 'magic.name':
    print 'You nailed it!'
else:
    print args.a

ভাল একটি আরো মার্জিত সমাধান হতে পারে, কিন্তু এই কাজ করে এবং minimalist হয়।


Python HOWTOArgparse টিউটোরিয়ালটি লক্ষ্য করুন। এটি বেশিরভাগ মৌলিক উদাহরণ থেকে শুরু হয়, এটির মতো:

import argparse
parser = argparse.ArgumentParser()
parser.add_argument("square", type=int,
                    help="display a square of a given number")
args = parser.parse_args()
print(args.square**2)

এবং কম মৌলিক বেশী অগ্রগতি।

একটি বিকল্পের জন্য পূর্বনির্ধারিত পছন্দ সঙ্গে একটি উদাহরণ আছে, কি জিজ্ঞাসা করা হয়:

import argparse
parser = argparse.ArgumentParser()
parser.add_argument("square", type=int,
                    help="display a square of a given number")
parser.add_argument("-v", "--verbosity", type=int, choices=[0, 1, 2],
                    help="increase output verbosity")
args = parser.parse_args()
answer = args.square**2
if args.verbosity == 2:
    print("the square of {} equals {}".format(args.square, answer))
elif args.verbosity == 1:
    print("{}^2 == {}".format(args.square, answer))
else:
    print(answer)

এই পোস্ট দ্বারা অনুপ্রাণিত এখনো আরেকটি সারসংক্ষেপ ভূমিকা ,.

import argparse

# define functions, classes, etc.

# executes when your script is called from the command-line
if __name__ == "__main__":

    parser = argparse.ArgumentParser()
    #
    # define each option with: parser.add_argument
    #
    args = parser.parse_args() # automatically looks at sys.argv
    #
    # access results with: args.argumentName
    #

আর্গুমেন্ট নিম্নলিখিত সমন্বয় সঙ্গে সংজ্ঞায়িত করা হয়:

parser.add_argument( 'name', options... )              # positional argument
parser.add_argument( '-x', options... )                # single-char flag
parser.add_argument( '-x', '--long-name', options... ) # flag with long name

সাধারণ বিকল্পগুলি হল:

  • help : এই arg এর জন্য বর্ণনা --help করা হয়।
  • default : আর্গুমেন্ট বাদ দেওয়া হলে ডিফল্ট মান।
  • type : যদি আপনি একটি float বা int (যদি অন্যথায় str ) আশা করেন।
  • dest : একটি পতাকাতে একটি ভিন্ন নাম দিন (উদাহরণস্বরূপ '-x', '--long-name', dest='longName' )।
    দ্রষ্টব্য: ডিফল্টরূপে - --long-name args.long_name দিয়ে অ্যাক্সেস করা হয়
  • action : নির্দিষ্ট আর্গুমেন্ট বিশেষ পরিচালনার জন্য
    • store_true, store_false : বুলিয়ান args জন্য
      '--foo', action='store_true' => args.foo == True
    • store_const : বিকল্প গঠন সঙ্গে ব্যবহার করা হবে
      '--foo', action='store_const', const=42 => args.foo == 42
    • count : পুনরাবৃত্তি বিকল্পের জন্য, যেমন ./myscript.py -vv
      '-v', action='count' => args.v == 2
    • append : পুনরাবৃত্তি বিকল্পগুলির জন্য, যেমন ./myscript.py --foo 1 --foo 2
      '--foo', action='append' => args.foo == ['1', '2']
  • required : একটি পতাকা প্রয়োজন হলে, বা একটি অবস্থানগত যুক্তি নেই।
  • nargs : N args ক্যাপচার একটি পতাকা জন্য
    ./myscript.py --foo ab => args.foo = ['a', 'b']
  • choices : সম্ভাব্য ইনপুটগুলি সীমাবদ্ধ করতে (স্ট্রিংগুলির তালিকা হিসাবে নির্দিষ্ট করুন অথবা type=int )।




argparse