मेरे पास एक डेटा वृद्धि स्क्रिप्ट है जिसमें वैकल्पिक तरीकों का एक समूह है जो argparse तर्कों द्वारा ट्रिगर किया गया है। मैं उत्सुक हूं कि टर्मिनल से पास किए गए क्रम के आधार पर argparse कमांड को संसाधित करने के लिए मैं अपने कोड को कैसे तैयार कर सकता हूं।

लक्ष्य: अगर मैं तर्कों को इस प्रकार पास करना चाहता हूं: python maths.py --add --multiply मैं चाहता हूं कि यह पहले १० जोड़ दे और फिर ५ सेकंड से गुणा करे। अगर मैं तर्कों को इस प्रकार पास करना चाहता हूं: python maths.py --multiply --add मैं चाहता हूं कि यह पहले 5 गुणा करे और फिर 10 जोड़ें।

उदाहरण के लिए:

class Maths:
      def __init__(self):
          self.counter = 0

      def addition(self, num):
          self.counter += num
          return self

      def multiply(self, num):
          self.counter *= num
          return self

 
def main():
        parser = argparse.ArgumentParser()
        parser.add_argument('--add', required = False, action = 'store_true')
        parser.add_argument('--multiply', required = False, action = 'store_true')
        args = parser.parse_args()
        maths = Maths()
        maths.addition(10)
        maths.multiply(5)
        print(maths.counter)

if __name__ == "__main__":
      main()

तर्कों को कैसे पारित किया जाता है, इसके आधार पर मैं ऑर्डरिंग कैसे पूरा कर सकता हूं? धन्यवाद!

0
Coldchain9 14 जुलाई 2020, 01:24

1 उत्तर

सबसे बढ़िया उत्तर

यह पार्सर स्ट्रिंग्स की सूचियों को इनपुट करने के दो तरीके प्रदान करता है:

In [10]: parser = argparse.ArgumentParser() 
    ...: parser.add_argument('--cmds', nargs='*', choices=['add','mult']) 
    ...: parser.add_argument('--add', dest='actions', action='append_const', const='add') 
    ...: parser.add_argument('--multiply', dest='actions', action = 'append_const', const='mult') 
    ...: parser.print_help() 
    ...:  
    ...:                                                                                             
usage: ipython3 [-h] [--cmds [{add,mult} [{add,mult} ...]]] [--add]
                [--multiply]

optional arguments:
  -h, --help            show this help message and exit
  --cmds [{add,mult} [{add,mult} ...]]
  --add
  --multiply

'--cmds' तर्क के मान के रूप में:

In [11]: parser.parse_args('--cmds mult add'.split())                                                
Out[11]: Namespace(actions=None, cmds=['mult', 'add'])

अलग ध्वजांकित तर्क के रूप में:

In [12]: parser.parse_args('--mult --add'.split())                                                   
Out[12]: Namespace(actions=['mult', 'add'], cmds=None)

दोनों ही मामलों में मैं स्ट्रिंग्स की एक सूची बनाता हूं। दूसरे में const मान फ़ंक्शन या तरीके हो सकते हैं।

const=maths.addition
1
hpaulj 14 जुलाई 2020, 04:55