मेरे पास एक डेटा वृद्धि स्क्रिप्ट है जिसमें वैकल्पिक तरीकों का एक समूह है जो 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()
तर्कों को कैसे पारित किया जाता है, इसके आधार पर मैं ऑर्डरिंग कैसे पूरा कर सकता हूं? धन्यवाद!
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
संबंधित सवाल
जुड़े हुए प्रश्न
नए सवाल
python-3.x
पायथन प्रोग्रामिंग के बारे में प्रश्नों के लिए जो भाषा के संस्करण 3+ के लिए विशिष्ट हैं। सभी पायथन सवालों पर अधिक जेनेरिक [अजगर] टैग का उपयोग करें, और केवल यह जोड़ें यदि आपका प्रश्न संस्करण-विशिष्ट है। पायथन 2 प्रश्नों के लिए [अजगर -2] टैग का उपयोग करें।