অপ্ট পার্সির চেয়ে আরগপার্স কেন ব্যবহার করবেন?


290

আমি লক্ষ্য করেছি যে পাইথন ২.7 ডকুমেন্টেশনে আরও একটি কমান্ড-লাইন পার্সিং মডিউল রয়েছে। এছাড়াও getoptএবং optparseএখন আমাদের আছে argparse

কেন এখনও অন্য কমান্ড-লাইন পার্সিং মডিউল তৈরি করা হয়েছে? আমি এর পরিবর্তে কেন এটি ব্যবহার করব optparse? নতুন বৈশিষ্ট্য আছে যা সম্পর্কে আমার জানা উচিত?


8
বা সম্ভবত কোনওটিই ব্যবহার করবেন না কারণ ২০১২ সাল থেকে পাইথনের কাছে ডকপট নামে আর্গুমেন্ট পার্সিংয়ের জন্য একটি সহজ, শক্তিশালী এবং সত্যই শীতল মডিউল রয়েছে। docopt.org
nddou

1
এটি ক্লিক করে চেষ্টা করুন এটি অপ্ট পার্সের চারপাশে মোড়ানো।
অমিত ত্রিপাঠি

উত্তর:


324

পাইথন এর হিসাবে 2.7, optparseনিন্দা করা হয়েছে, এবং আশা ভবিষ্যতে চলে যাবে।

argparseএর মূল পৃষ্ঠায় ( https://code.google.com/archive/p/argparse/ ) তালিকাভুক্ত সমস্ত কারণে আরও ভাল :

  • অবস্থানগত আর্গুমেন্ট পরিচালনা করা
  • সাব-কমান্ড সমর্থন
  • বিকল্প বিকল্প উপসর্গ পছন্দ +এবং মতামত/
  • শূন্য বা আরও বেশি এবং এক বা একাধিক স্টাইল আর্গুমেন্ট পরিচালনা করা ling
  • আরও তথ্যমূলক ব্যবহার বার্তা উত্পাদন
  • কাস্টম ধরণের এবং ক্রিয়াকলাপের জন্য একটি আরও সহজ ইন্টারফেস সরবরাহ

আরও তথ্য পিইপি 389- এও রয়েছে , এটিই সেই যানবাহন যা argparseএটি স্ট্যান্ডার্ড লাইব্রেরিতে পরিণত করেছিল।


18
কাস্টম ধরণের জন্য অনেক সহজ ইন্টারফেস ... তবে সামগ্রিকভাবে আরও জটিল ইন্টারফেস। আমি সত্যিই অবাক কেন আমি এমনকি optparse স্যুইচ কারণ কি ড্রামের আওয়াজ getopt হবে থাকার । হ্যাঁ, din ডাইনোসরের কোনও অবচয় নেই। Sheeesh।
জর্জেন এ। এয়ারহার্ড

4
optparseপিইপিতে "বিশুদ্ধতা" এর উল্লেখ পরে এটি যুক্ত করার মতো জটিলতার বিষয়ে যুক্তি দেয় যে এটি শৈলের মতো নমনীয় হওয়ার মতো কোডিং করা হয়েছিল (খারাপভাবে)।
নিক টি

1
সাবকম্যান্ডস ইন্টারফেসটি দরিদ্র। ডিফল্ট আউটপুট দরকারী নয় এবং এটি পরিবর্তন করা শক্ত।
অ্যানাটোলি টেকটোনিক

নোট করুন যে কোড.google.com কয়েক দিনের মধ্যে রক্ষণাবেক্ষণে যাবে। আরও বিশদ সহ পার্থক্যগুলি এখানে উপলভ্য: argparse.googlecode.com/svn/trunk/doc/argparse-vs-optparse.html
জ্যান-ফ্রাঙ্কোয়েস টি।

63

অপ্ট পার্সির পরিবর্তে কেন আমি এটি ব্যবহার করব? তাদের নতুন বৈশিষ্ট্যগুলি সম্পর্কে আমার জানা উচিত?

@ নিকোলাসের উত্তরটি এটিকে ভালভাবে কভার করে, আমি মনে করি, তবে আপনি যে আরও "মেটা" প্রশ্নটি শুরু করছেন তা নয়:

কেন এখনও অন্য কমান্ড-লাইন পার্সিং মডিউল তৈরি করা হয়েছে?

মানসিক পাঠাগারটিতে কোনও কার্যকর মডিউল যুক্ত করা হলে এই দ্বিধা এক নম্বর: যখন আপনি বেশ ভালো, তবে পিছনে-অসম্পূর্ণ, একই ধরণের কার্যকারিতা সরবরাহ করার উপায় উদ্ভূত হয় তখন আপনি কী করবেন?

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

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

(আপনার প্রশ্নের সাথে সরাসরি সম্পর্কিত নয়, দু'পক্ষের দ্বিধাটি সংক্ষিপ্ত করে বলা হয়েছে "স্ট্যান্ডার্ড লাইব্রেরিটি যেখানে ভাল প্যাকেজগুলি মারা যায়" ... প্রতি বছর দেড় বা তার চেয়ে বেশি প্যাকেজগুলি খুব বেশি নয়, খুব স্থিতিশীল, এর চেয়ে বেশি প্রায়শই রিলিজের প্রয়োজন হয় না , এটি স্ট্যান্ডার্ড লাইব্রেরিতে "হিমায়িত" হয়ে যথেষ্ট ক্ষতিগ্রস্থ হতে পারে ... তবে, এটি সত্যিই আলাদা সমস্যা)।


স্বীকার করে নিন, আপনি পাইথন ইনস্টলেশনগুলির জন্য ২.p এর আগে আরগ্পারস.পি অন্তর্ভুক্ত করতে পারেন এবং পিছনে-অসম্পূর্ণ পরিবর্তনগুলি নিয়ে চিন্তা করবেন না not ট্র্যাক করার জন্য অতিরিক্ত জিনিস, তবে এটি এখনও স্ট্যান্ডার্ড লাইব্রেরির বাইরে argparse.googlecode.com এ রক্ষণাবেক্ষণ করা হচ্ছে
এহতেশ চৌধুরী

2
আরগপারস কেবলমাত্র কিছু (কুলুঙ্গি) ব্যবহারের জন্য যথেষ্ট উন্নত। এটি নিরঙ্কুশ দিক থেকে আরও ভাল নয়, এটি আলাদা । এটি অপ্টপার্স করতে পারে না এমন জিনিসগুলি করতে পারে তবে এর মধ্যে রয়েছে রিগ্রেশনস। একটি উদাহরণ আমি কেবল এর মধ্যে দৌড়েছি: ডিফল্টরূপে "-" হ্যান্ডেল করা অপ্ট পার্সেস (নিশ্চিত নয় যে এটি যা করার কথা তা এটি করেছে) যখন আরগপারস এর কিছুই জানে না।
জারজেন এ। এয়ার্ড

উপরের মন্তব্যে দেরি করে আসা কারও পক্ষে, আরগপার্স আপনি উপসর্গ এবং নামটি সেট করেছেন এবং বেশিরভাগ পার্সার লিখেছেন parser.add_argument('--long-opt', '-l',...); '-' সহজেই পরিচালনা করা হয়, এবং তবে আপনি পছন্দ করেন।
সিলভারব্যাক নেট

37

পাইথন সংযোজনের পক্ষে যুক্তির সর্বোত্তম উত্সটি হ'ল তার পিইপি: পিইপি 389: আরগপারস - নিউ কমান্ড লাইন পার্সিং মডিউল , বিশেষত, অংশটি শিরোনাম, কেন গিওপ্ট এবং অপ্ট পার্সিং যথেষ্ট নয়?


18

ব্লকে নতুন বাচ্চাও আছে!

  • ইতিমধ্যে উল্লিখিত অবহেলিত optparse ছাড়াও । [ব্যবহার করবেন না]
  • আরগপার্সেও উল্লেখ করা হয়েছিল, যা বাইরের লিবস অন্তর্ভুক্ত করতে রাজি নয় এমন লোকদের জন্য একটি সমাধান।
  • ডকোপট হ'ল বাহ্যিক লিব যা দেখার মতো, যা আপনার ইনপুটটির জন্য পার্সার হিসাবে একটি ডকুমেন্টেশন স্ট্রিং ব্যবহার করে।
  • ক্লিক এছাড়াও বাহ্যিক lib এবং আর্গুমেন্ট সংজ্ঞায়িত জন্য সজ্জক ব্যবহার করে। (আমার উত্স প্রস্তাব দেয়: কেন ক্লিক করুন )
  • পাইথন- ইনকোয়্যারার নির্বাচনের দিকে মনোনিবেশ করা সরঞ্জামগুলির জন্য এবং ইনকায়ারআরজেজেসের ভিত্তিতে ( রেপো )

আপনি একটি আরো গভীর তুলনা প্রয়োজন পড়তে দয়া করে এই এবং আপনি ব্যবহার শেষ হতে পারে docopt বা ক্লিক । কাইল পার্ডনকে ধন্যবাদ!


4
যদিও এটি একটি সার্থক মন্তব্য, এটি এখনও একটি উত্তরের চেয়ে বেশি মন্তব্য .. না ডাউনভোট তবে আমার পক্ষে কোনও উর্ধ্বেও নয়! আপনার উত্তরটিকে একটি সত্যিকারের উত্তর হিসাবে তৈরি করার জন্য নিবন্ধটির মূল্যবান সংক্ষিপ্তসার সহ প্রসারিত করুন !: meta.stackexchange.com/a/8259/172394
স্টেফানো

1
আমি আমার লিঙ্কের একটি সংক্ষিপ্তসার অন্তর্ভুক্ত করার চেষ্টা করেছি আশা করি এটি এখন একটি ভাল স্ট্যাকওভারফ্লো উত্তরের পক্ষে মূল্যবান।
নিঃসঙ্গ

6

অপ্টপার্স থেকে আরগপার্সে স্যুইচ করতে প্রথমে আমি @ ফারমার মতোই অনিচ্ছুক ছিলাম, কারণ:

  1. আমি ভেবেছিলাম পার্থক্যটি এত বিশাল নয়।
  2. বেশ কিছু ভিপিএস এখনও ডিফল্টরূপে পাইথন ২.6 সরবরাহ করে।

তারপরে আমি এই দস্তাবেজটি দেখেছি, আরগপার্স আউটপারফর্মগুলি অপ্টপার্স, বিশেষত যখন অর্থবহ সহায়তা বার্তা উত্পন্ন করার কথা বলার সময়: http://argparse.googlecode.com/svn/trunk/doc/argparse-vs-optparse.html

এবং তারপরে আমি @ নিকোলাসের " আরগপার্স বনাম অপ্টপার্স " দেখেছি, বলেছে যে পাইথনে << 2.7 (আরে, আমি এর আগে জানতাম না) আরগপার্স পাওয়া যায়)

এখন আমার দুটি উদ্বেগের সুরাহা করা হয়েছে। আমি এটি এই আশায় লিখেছিলাম যে এটি অন্যদেরকে একই ধরণের মানসিকতা নিয়ে সহায়তা করবে।

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