मुझे इस स्क्रिप्ट में getopt()
कोड के साथ समस्याएं आ रही हैं जो मैं लिख रहा हूं जो कुछ सरल फ़ाइल मैनिपुलेशन को 2 आवश्यक पैरामीटर (इनपुट फ़ाइल नाम और आउटपुट फ़ाइल नाम) और/या 2 वैकल्पिक/स्थितित्मक तर्क (डीबग या सहायता) दिया जाता है।getopt() आवश्यक तर्क लागू नहीं कर रहा है?
कोड है:
def main(argv):
try:
opts, args = getopt.getopt(argv, "i:o:dh", ["input-file=", "output-file=", "debug", "help"])
except getopt.GetoptError:
usage()
sys.exit(2)
for opt, arg in opts:
if opt in ("-h", "--help"):
usage()
sys.exit()
elif opt in ("-d", "--debug"):
global _debug
_debug = 1
elif opt in ("-i", "--input-file"):
u_input_file_name = arg
elif opt in ("-o", "--output-file"):
u_output_file_name = arg
getopt()
प्रलेखन के अनुसार:
विकल्प है कि एक तर्क एक कॉलन ('
:
' पीछा आवश्यकता होती है, यानी, एक ही प्रारूप है कि यूनिक्स getopt() का उपयोग करता है)।
समस्या यह है कि के रूप में मैं इसे समझ, चर/एक :
के बाद आर्ग के रूप में आवश्यक रूप से लागू किया जाना चाहिए ... लेकिन विकल्पों i
और o
से लागू नहीं किया जा रहा है। u_input_file_name
के बारे में त्रुटि इस स्निपेट garners चल रहा है निर्धारित किये जाने से पहले संदर्भित किया जा रहा:
[[email protected] ~/python]$ ./inco_add_cm_mpscli.py -o google
Traceback (most recent call last):
File "./inco_add_cm_mpscli.py", line 57, in <module>
main(sys.argv[1:])
File "./inco_add_cm_mpscli.py", line 25, in main
infile = open(u_input_file_name, 'r')
UnboundLocalError: local variable 'u_input_file_name' referenced before assignment
क्या मैं गलत कर रहा हूँ?
परिसीमन विकल्पों में से उद्देश्य क्या है अगर ** आवश्यकता नहीं है तो ** ** एक तर्क की आवश्यकता है? –
क्योंकि जब getopt() कमांड लाइन को पार्स करते हैं, तो उसे पता होना चाहिए कि टोकन पिछले विकल्प का तर्क है या यह एक नया तर्क/विकल्प है। तो आपके उदाहरण में, यह प्रकट करने के लिए -i या -o को लागू नहीं करता है, लेकिन एक बार -i या -o दिखाई देने पर, पायथन इसके तर्क के ठीक बाद टोकन का इलाज करता है। – evergreen
क्या यह टोकन को या तो - या - के अनुसार लंबे या छोटे ऑप के लिए प्रीपेड के रूप में नहीं पहचानता है? –