python - কিভাবে কমান্ড লাইন আর্গুমেন্ট পড়তে/প্রক্রিয়া?




command-line command-line-arguments (12)

Pocoo এর ক্লিকটি আরো স্বজ্ঞাত, কম বয়লারপ্লেট প্রয়োজন, এবং অন্তত হিসাবে argparse হিসাবে শক্তিশালী।

আমি যতদূর সম্মুখীন হয়েছি কেবলমাত্র দুর্বলতাটি হল যে আপনি পৃষ্ঠায় সহায়তা করার জন্য অনেক কাস্টমাইজেশন করতে পারবেন না, তবে এটি সাধারণত একটি প্রয়োজন নয় এবং docopt যখন এটি পছন্দ করে তখন এটি স্পষ্ট পছন্দ বলে মনে হয়।


আপনি optparse দেখতে optparse "অপটপার্স মডিউলটি অপ্রচলিত এবং আরও উন্নত করা হবে না; বিকাশ argparse মডিউল দিয়ে argparse ।"


আপনি কিছু দ্রুত এবং খুব নমনীয় প্রয়োজন হলে

main.py:

import sys

first_name = sys.argv[1]
last_name = sys.argv[2]
print("Hello " + first_name + " " + last_name)

তারপর python main.py James Smith রান

নিম্নলিখিত আউটপুট উত্পাদন করতে:

হ্যালো জেমস স্মিথ


আমার সমাধান entrypoint2 । উদাহরণ:

from entrypoint2 import entrypoint
@entrypoint
def add(file, quiet=True): 
    ''' This function writes report.

    :param file: write report to FILE
    :param quiet: don't print status messages to stdout
    '''
    print file,quiet

সাহায্যকারী লেখা:

usage: report.py [-h] [-q] [--debug] file

This function writes report.

positional arguments:
  file         write report to FILE

optional arguments:
  -h, --help   show this help message and exit
  -q, --quiet  don't print status messages to stdout
  --debug      set logging level to DEBUG

আমি অপটপার্স নিজে ব্যবহার করি, কিন্তু সাইমন উইলিসন তার সম্প্রতি উপস্থাপিত optfunc লাইব্রেরির দিক দিয়ে সত্যিই দিকটি পছন্দ করে। এটি দ্বারা কাজ করে:

"একটি ফাংশন সংজ্ঞা অন্তর্নিহিত (তার আর্গুমেন্ট এবং তাদের ডিফল্ট মান সহ) এবং একটি কমান্ড লাইন আর্গুমেন্ট পার্সার নির্মাণ করতে এটি ব্যবহার করে।"

সুতরাং, উদাহরণস্বরূপ, এই ফাংশন সংজ্ঞা:

def geocode(s, api_key='', geocoder='google', list_geocoders=False):

এই Optparse সাহায্য টেক্সট মধ্যে পরিণত হয়:

    Options:
      -h, --help            show this help message and exit
      -l, --list-geocoders
      -a API_KEY, --api-key=API_KEY
      -g GEOCODER, --geocoder=GEOCODER

আমি এই অন্যদের একটি সহজ বিকল্প হিসাবে docopt এ খুঁজছেন সুপারিশ।

ডকোপট একটি নতুন প্রকল্প যা আপনার নিজের প্রয়োগ বাস্তবায়ন করার পরিবর্তে আপনার --help ব্যবহার বার্তাটি বিশ্লেষণ করে কাজ করে। আপনি শুধু আপনার ব্যবহার বার্তা POSIX বিন্যাসে রাখা আছে।


তবুও অন্য বিকল্প argh । এটি argparse এ তৈরি করে এবং আপনাকে কিছু লিখতে দেয়:

import argh

# declaring:

def echo(text):
    "Returns given word as is."
    return text

def greet(name, greeting='Hello'):
    "Greets the user with given name. The greeting is customizable."
    return greeting + ', ' + name

# assembling:

parser = argh.ArghParser()
parser.add_commands([echo, greet])

# dispatching:

if __name__ == '__main__':
    parser.dispatch()

এটি স্বয়ংক্রিয়ভাবে সহায়তা তৈরি করবে এবং এটিকে আপনি কীভাবে আর্গ-পার্সিং কাজ করতে হবে তার উপর অতিরিক্ত নির্দেশিকা সরবরাহ করতে ব্যবহার করতে পারেন।


শুধু these কারণগুলির জন্য ভাল যা argparse জন্য evangelizing কাছাকাছি যাচ্ছে .. মূলত:

(লিঙ্ক থেকে কপি)

  • argparse মডিউল অবস্থানগত এবং ঐচ্ছিক আর্গুমেন্ট হ্যান্ডেল করতে পারেন, যখন Optparse শুধুমাত্র ঐচ্ছিক আর্গুমেন্ট পরিচালনা করতে পারেন

  • Argparse আপনার কমান্ড লাইন ইন্টারফেসটি কেমন হওয়া উচিত তা নিয়ে দ্বন্দ্বপূর্ণ নয় - যেমন বিকল্পগুলি যেমন ফাইল বা ফাইল / ফাইলগুলি সমর্থিত হয় তার বিকল্পগুলি সমর্থিত। Optparse কার্যকারিতা উপর বিশুদ্ধতা পছন্দ, এই বৈশিষ্ট্য সমর্থন করতে অস্বীকার করে

  • Argparse আপনার আর্গুমেন্ট থেকে নির্ধারিত কমান্ড-লাইন ব্যবহার সহ আরও তথ্যপূর্ণ ব্যবহার বার্তা উত্পাদন করে এবং উভয় অবস্থানগত এবং ঐচ্ছিক আর্গুমেন্টগুলির জন্য বার্তাগুলিকে সহায়তা করে। অপটপার্স মডিউল আপনাকে নিজের ব্যবহার স্ট্রিং লিখতে এবং এটির অবস্থানগত আর্গুমেন্টগুলির জন্য সহায়তা প্রদর্শন করার কোন উপায় নেই।

  • argparse এমন কর্ম সমর্থন করে যা কমান্ড-লাইন আর্গুমেন্টগুলির একটি পরিবর্তনশীল সংখ্যা গ্রাস করে, অপট্পার্সের জন্য আর্গুমেন্টগুলির সঠিক সংখ্যা (যেমন 1, 2, বা 3) অগ্রিম জানা দরকার

  • argparse সাব-কমান্ডগুলিতে প্রেরণকারী পার্সারগুলিকে সমর্থন করে, অপটপার্সকে অনুমতি_ইনটেন্ডারড_র্গস সেটিং এবং ম্যানুয়ালি পাঠান পাঠানোর জন্য প্রয়োজন

এবং আমার ব্যক্তিগত প্রিয়:

  • argparse টাইপ এবং অ্যাকশন প্যারামিটারগুলিকে add_argument() সহজ ক্যালেবলের সাথে নির্দিষ্ট করার জন্য অনুমতি দেয়, যখন অপটপার্সকে সঠিক যুক্তি পরীক্ষণের জন্য STORE_ACTIONS বা CHECK_METHODS মতো হ্যাকিং শ্রেণির গুণাবলী প্রয়োজন।

docopt লাইব্রেরি সত্যিই slick হয়। এটি আপনার অ্যাপ্লিকেশনের জন্য ব্যবহারের স্ট্রিং থেকে একটি যুক্তি নির্দেশ তৈরি করে।

যেমন ডকোপট রিডমে থেকে:

"""Naval Fate.

Usage:
  naval_fate.py ship new <name>...
  naval_fate.py ship <name> move <x> <y> [--speed=<kn>]
  naval_fate.py ship shoot <x> <y>
  naval_fate.py mine (set|remove) <x> <y> [--moored | --drifting]
  naval_fate.py (-h | --help)
  naval_fate.py --version

Options:
  -h --help     Show this screen.
  --version     Show version.
  --speed=<kn>  Speed in knots [default: 10].
  --moored      Moored (anchored) mine.
  --drifting    Drifting mine.

"""
from docopt import docopt


if __name__ == '__main__':
    arguments = docopt(__doc__, version='Naval Fate 2.0')
    print(arguments)

স্ট্যান্ডার্ড লাইব্রেরি মধ্যে ক্যানোনিকাল সমাধান argparse ( docs ):

এখানে একটি উদাহরণ:

from argparse import ArgumentParser

parser = ArgumentParser()
parser.add_argument("-f", "--file", dest="filename",
                    help="write report to FILE", metavar="FILE")
parser.add_argument("-q", "--quiet",
                    action="store_false", dest="verbose", default=True,
                    help="don't print status messages to stdout")

args = parser.parse_args()

argparse সমর্থন করে (অন্যান্য জিনিসগুলির মধ্যে):

  • কোনো আদেশ একাধিক অপশন।
  • সংক্ষিপ্ত এবং দীর্ঘ বিকল্প।
  • ডিফল্ট মান।
  • একটি ব্যবহার সাহায্য বার্তা উত্পাদনের।

import argparse

parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('integers', metavar='N', type=int, nargs='+',
                   help='an integer for the accumulator')
parser.add_argument('--sum', dest='accumulate', action='store_const',
                   const=sum, default=max,
                   help='sum the integers (default: find the max)')

args = parser.parse_args()
print(args.accumulate(args.integers))

Assuming the Python code above is saved into a file called prog.py
$ python prog.py -h

Ref-link: https://docs.python.org/3.3/library/argparse.html

import sys

print("\n".join(sys.argv))

sys.argv একটি তালিকা যা কমান্ড লাইনের স্ক্রিপ্টে প্রেরিত সমস্ত আর্গুমেন্ট রয়েছে।

মূলত,

import sys
print(sys.argv[1:])




command-line-arguments