optparse ਕੋਡ ਨੂੰ argparse ਵਿੱਚ ਮਾਈਗਰੇਟ ਕਰਨਾ

argparse ਮੋਡੀਊਲ ਕਈ ਉੱਚ-ਪੱਧਰੀ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ ਜੋ optparse ਮੋਡੀਊਲ ਵਿੱਚ ਮੂਲ ਰੂਪ ਵਿੱਚ ਉਪਲਬਧ ਨਹੀਂ ਹਨ, ਜਿਸ ਵਿੱਚ ਸ਼ਾਮਲ ਹਨ:

  • ਸਥਿਤੀ-ਆਧਾਰਿਤ ਆਰਗੂਮੈਂਟਾਂ ਨੂੰ ਸੰਭਾਲਣਾ।

  • ਉਪ-ਕਮਾਂਡਾਂ ਦਾ ਸਮਰਥਨ ਕਰਨਾ।

  • + ਅਤੇ / ਵਰਗੇ ਵਿਕਲਪਿਕ ਓਪਸ਼ਨ ਪ੍ਰੀਫ਼ਿਕਸਾਂ ਦੀ ਆਗਿਆ ਦੇਣਾ।

  • ਜ਼ੀਰੋ-ਜਾਂ-ਵੱਧ ਅਤੇ ਇੱਕ-ਜਾਂ-ਵੱਧ ਸ਼ੈਲੀ ਦੇ ਆਰਗੂਮੈਂਟਾਂ ਨੂੰ ਸੰਭਾਲਣਾ।

  • ਹੋਰ ਜਾਣਕਾਰੀਪੂਰਨ ਵਰਤੋਂ ਸੁਨੇਹੇ ਤਿਆਰ ਕਰਨਾ।

  • ਕਸਟਮ type ਅਤੇ action ਲਈ ਕਾਫ਼ੀ ਸਰਲ ਇੰਟਰਫੇਸ ਪ੍ਰਦਾਨ ਕਰਨਾ।

ਸ਼ੁਰੂ ਵਿੱਚ, argparse ਮੋਡੀਊਲ ਨੇ optparse ਨਾਲ ਅਨੁਕੂਲਤਾ ਬਣਾਈ ਰੱਖਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕੀਤੀ ਸੀ। ਹਾਲਾਂਕਿ, ਘੋਸ਼ਣਾਤਮਕ ਕਮਾਂਡ ਲਾਈਨ ਓਪਸ਼ਨ ਪ੍ਰੋਸੈਸਿੰਗ (ਜਦੋਂ ਕਿ ਸਥਿਤੀ-ਆਧਾਰਿਤ ਆਰਗੂਮੈਂਟਾਂ ਦੀ ਪ੍ਰੋਸੈਸਿੰਗ ਐਪਲੀਕੇਸ਼ਨ ਕੋਡ 'ਤੇ ਛੱਡੀ ਜਾਂਦੀ ਹੈ) ਅਤੇ ਘੋਸ਼ਣਾਤਮਕ ਇੰਟਰਫੇਸ ਵਿੱਚ ਨਾਮਿਤ ਓਪਸ਼ਨਾਂ ਅਤੇ ਸਥਿਤੀ-ਆਧਾਰਿਤ ਆਰਗੂਮੈਂਟਾਂ ਦੋਵਾਂ ਦੇ ਸਮਰਥਨ ਵਿਚਲੇ ਬੁਨਿਆਦੀ ਡਿਜ਼ਾਈਨ ਅੰਤਰਾਂ ਕਾਰਨ, ਸਮੇਂ ਦੇ ਨਾਲ ਇਸ ਦਾ API optparse ਤੋਂ ਵੱਖਰਾ ਹੋ ਗਿਆ ਹੈ।

ਜਿਵੇਂ ਕਿ Choosing an argument parsing library ਵਿੱਚ ਵਰਣਨ ਕੀਤਾ ਗਿਆ ਹੈ, ਉਹ ਐਪਲੀਕੇਸ਼ਨਾਂ ਜੋ ਇਸ ਵੇਲੇ optparse ਵਰਤ ਰਹੀਆਂ ਹਨ ਅਤੇ ਇਸ ਦੇ ਕੰਮ ਕਰਨ ਦੇ ਤਰੀਕੇ ਨਾਲ ਸੰਤੁਸ਼ਟ ਹਨ, ਉਹ ਸਿਰਫ਼ optparse ਦੀ ਵਰਤੋਂ ਜਾਰੀ ਰੱਖ ਸਕਦੀਆਂ ਹਨ।

ਜਿਹੜੇ ਐਪਲੀਕੇਸ਼ਨ ਡਿਵੈਲਪਰ ਮਾਈਗਰੇਸ਼ਨ ਬਾਰੇ ਵਿਚਾਰ ਕਰ ਰਹੇ ਹਨ, ਉਹਨਾਂ ਨੂੰ ਇਹ ਫ਼ੈਸਲਾ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਕਿ ਮਾਈਗਰੇਸ਼ਨ ਕਰਨਾ ਉਚਿਤ ਹੈ ਜਾਂ ਨਹੀਂ, ਉਸ ਭਾਗ ਵਿੱਚ ਵਰਣਿਤ ਅੰਦਰੂਨੀ ਵਿਹਾਰਕ ਅੰਤਰਾਂ ਦੀ ਸੂਚੀ ਵੀ ਦੇਖਣੀ ਚਾਹੀਦੀ ਹੈ।

ਉਹਨਾਂ ਐਪਲੀਕੇਸ਼ਨਾਂ ਲਈ ਜੋ optparse ਤੋਂ argparse ਵਿੱਚ ਮਾਈਗਰੇਟ ਕਰਨ ਦਾ ਫ਼ੈਸਲਾ ਕਰਦੀਆਂ ਹਨ, ਹੇਠਾਂ ਦਿੱਤੇ ਸੁਝਾਅ ਮਦਦਗਾਰ ਹੋਣਗੇ:

  • ਸਾਰੀਆਂ optparse.OptionParser.add_option() ਕਾਲਾਂ ਨੂੰ ArgumentParser.add_argument() ਕਾਲਾਂ ਨਾਲ ਬਦਲੋ।

  • (options, args) = parser.parse_args() ਨੂੰ args = parser.parse_args() ਨਾਲ ਬਦਲੋ ਅਤੇ ਸਥਿਤੀ-ਆਧਾਰਿਤ ਆਰਗੂਮੈਂਟਾਂ ਲਈ ਵਾਧੂ ArgumentParser.add_argument() ਕਾਲਾਂ ਸ਼ਾਮਲ ਕਰੋ। ਧਿਆਨ ਵਿੱਚ ਰੱਖੋ ਕਿ ਜਿਸ ਨੂੰ ਪਹਿਲਾਂ options ਕਿਹਾ ਜਾਂਦਾ ਸੀ, ਉਹ ਹੁਣ argparse ਦੇ ਸੰਦਰਭ ਵਿੱਚ args ਕਿਹਾ ਜਾਂਦਾ ਹੈ।

  • optparse.OptionParser.disable_interspersed_args() ਦੀ ਥਾਂ parse_args() ਦੀ ਬਜਾਏ parse_intermixed_args() ਦੀ ਵਰਤੋਂ ਕਰੋ।

  • ਕਾਲਬੈਕ ਐਕਸ਼ਨਾਂ ਅਤੇ callback_* ਕੀਵਰਡ ਆਰਗੂਮੈਂਟਾਂ ਨੂੰ type ਜਾਂ action ਆਰਗੂਮੈਂਟਾਂ ਨਾਲ ਬਦਲੋ।

  • type ਕੀਵਰਡ ਆਰਗੂਮੈਂਟਾਂ ਲਈ ਸਟਰਿੰਗ ਨਾਮਾਂ ਨੂੰ ਸੰਬੰਧਿਤ ਕਿਸਮ ਆਬਜੈਕਟਾਂ (ਜਿਵੇਂ ਕਿ int, float, complex ਆਦਿ) ਨਾਲ ਬਦਲੋ।

  • optparse.Values ਨੂੰ Namespace ਨਾਲ ਅਤੇ optparse.OptionError ਅਤੇ optparse.OptionValueError ਨੂੰ ArgumentError ਨਾਲ ਬਦਲੋ।

  • %default ਜਾਂ %prog ਵਰਗੇ ਅਪ੍ਰਤੱਖ ਆਰਗੂਮੈਂਟਾਂ ਵਾਲੀਆਂ ਸਟਰਿੰਗਾਂ ਨੂੰ ਸਟਰਿੰਗਾਂ ਨੂੰ ਫਾਰਮੈਟ ਕਰਨ ਲਈ ਡਿਕਸ਼ਨਰੀਆਂ ਦੀ ਵਰਤੋਂ ਕਰਨ ਵਾਲੇ ਮਿਆਰੀ Python ਸਿੰਟੈਕਸ ਨਾਲ ਬਦਲੋ, ਅਰਥਾਤ %(default)s ਅਤੇ %(prog)s।

  • OptionParser ਕੰਸਟ੍ਰਕਟਰ ਦੇ version ਆਰਗੂਮੈਂਟ ਨੂੰ parser.add_argument('--version', action='version', version='<the version>') ਕਾਲ ਨਾਲ ਬਦਲੋ।