2011-12-03 13 views
6

मेरे पास एक ऐसा प्रोग्राम है जिसमें कई उपलब्ध विकल्प हैं। उदाहरण के लिए सेटिंग बदलने के लिए कॉन्फ़िगरेशन विकल्प।पायथन: Argparse subcommand subcommand?

./app config -h 

मुझे सामान्य argparse subcommands

मूल्यों

./app config list 

का उपयोग कर अब मैं config सूची सूची भी कहा जाता config subcommand के लिए एक और subcommand जोड़ना चाहते हैं इसके अलावा कि आदेश एक और स्वीकार करना चाहिए मदद देता है विकल्प तो यह है कि मैं कह सकते हैं

./app config list CATEGORY 
केवल करने के लिए

एक श्रेणी

मेरी कोड के config सूची अभी अब तक मैं किसी भी तरह एक subcommand में एक subcommand उपयोग करने के लिए नहीं मिल सका बस अधिक आदेशों

>>> parser = argparse.ArgumentParser() 
>>> subparsers = parser.add_subparsers(title='subcommands', 
...         description='valid subcommands', 
...         help='additional help') 
>>> subparsers.add_parser('foo') 
>>> subparsers.add_parser('bar') 
>>> parser.parse_args(['-h']) 
usage: [-h] {foo,bar} ... 

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

subcommands: 
    valid subcommands 

    {foo,bar} additional help 

साथ मूल रूप से यह है। यदि यह संभव है, तो कैसे? यदि नहीं, तो क्या इस लक्ष्य को पूरा करने का कोई और तरीका है?

अग्रिम

+0

यदि आप अपनी समस्या को समझने में दूसरों की सहायता के लिए यहां अपना कोड पोस्ट करते हैं तो यह बेहतर होगा। – number5

उत्तर

8
#file: argp.py 

import argparse 

parser = argparse.ArgumentParser(prog='PROG') 
parser_subparsers = parser.add_subparsers() 
sub = parser_subparsers.add_parser('sub') 
sub_subparsers = sub.add_subparsers() 
sub_sub = sub_subparsers.add_parser('sub_sub')                  
sub_sub_subparsers = sub_sub.add_subparsers() 
sub_sub_sub = sub_sub_subparsers.add_parser('sub_sub_sub') 

धन्यवाद काम करने के लिए लगता है।

In [392]: run argp.py 

In [393]: parser.parse_args('sub sub_sub sub_sub_sub'.split()) 
Out[393]: Namespace() 

In [400]: sys.version_info 
Out[400]: sys.version_info(major=2, minor=7, micro=2, releaselevel='final', serial=0) 
+0

ऐसा लगता है कि मैंने पहले से ही कोशिश की है, लेकिन बीमार इसे जांचें, धन्यवाद – cwoebker

+0

मैंने 2.7.2 के साथ प्रयास किया। मैं निश्चित रूप से जानना चाहता हूं कि आपको कोई समस्या है या नहीं :) –

संबंधित मुद्दे