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>')ਕਾਲ ਨਾਲ ਬਦਲੋ।