2016-01-25 8 views
7

मैं पार्स कमांड लाइन तर्कों के लिए argparse का उपयोग कर रहा हूं।Argparse के साथ कमांड लाइन तर्क मुद्रित करें?

डीबगिंग की सहायता के लिए, मैं print को उन तर्कों के साथ एक पंक्ति चाहूंगा जो पाइथन लिपि के साथ बुलाए गए थे। argparse के भीतर ऐसा करने का कोई आसान तरीका है?

उत्तर

11

ArgumentParser.parse_args डिफ़ॉल्ट रूप से sys.argv से तर्क लेता है। तो अगर आप उस व्यवहार में परिवर्तन नहीं करते (parse_args को कुछ और ही में पारित करके), तो आप बस सभी तर्कों अजगर स्क्रिप्ट के लिए पारित किया पाने के लिए sys.argv मुद्रित कर सकते हैं: वैकल्पिक रूप से

import sys 
print(sys.argv) 

, आप भी सिर्फ नाम स्थान प्रिंट कर सकता है कि parse_args रिटर्न; कि जिस तरह से आप प्राप्त सभी मूल्यों तरह से तर्क पार्सर उन्हें व्याख्या:

args = parser.parse_args() 
print(args) 
3

एक और अजगर स्क्रिप्ट भीतर argparse चल रहा है, तो जब यह unittest अंदर परीक्षण करना, फिर मुद्रण sys.argv तरह

[ 'C: \ ग्रहण \ plugins \ org.python.pydev_5.9.2.201708151115 \ pysrc \ runfiles.py', 'C: \ eclipse_workspace \ केवल मुख्य स्क्रिप्ट के तर्कों, जैसे प्रिंट होगा test_file_sear ch.py ​​',' --port ',' 58,454 ',' --verbosity ',' 0 ']

इस मामले में आप vars का उपयोग करना चाहिए आर्ग argparse से अधिक पुनरावृति करने के लिए:

parser = argparse.ArgumentParser(... 
... 
args = parser.parse_args() 
for arg in vars(args): 
    print arg, getattr(args, arg) 

धन्यवाद: https://stackoverflow.com/a/27181165/658497

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