Optparse, versi lama mengabaikan semua argumen yang tidak dikenal dan dijalankan. Dalam sebagian besar situasi, ini tidak ideal dan diubah dalam argumen. Tetapi ada beberapa situasi di mana Anda ingin mengabaikan argumen yang tidak dikenal dan menguraikan argumen yang Anda tentukan.
Sebagai contoh:
parser = argparse.ArgumentParser()
parser.add_argument('--foo', dest="foo")
parser.parse_args()
$python myscript.py --foo 1 --bar 2
error: unrecognized arguments: --bar
Apakah ada cara untuk menimpa ini?
Jawaban:
Menggantikan
dengan
Sebagai contoh,
sumber
parse_known_args
parser.parse_args(None)
daripadaparser.parse_args([])
dalam tes saya.parse_known_args
daripadaparse_args
memungkinkan penggunaanArgumentParser
kode dalam lingkupif __name__ == 'main':
(kondisi yang berlakuTrue
untuk semua sel dalam Notebook IPython ... yang saya temukan sangat membantu pengembangan dan pengujian kode yang ingin saya migrasikan ke skrip yang dipanggil pada akhirnya) dari baris perintah)Anda dapat menempatkan bagian yang tersisa ke dalam argumen baru
parser.add_argument('args', nargs=argparse.REMAINDER)
jika Anda ingin menggunakannya.sumber
parse_args()
dan tidak memerlukanparse_known_args()
(pada Python 2.7).Sebenarnya argparse masih "abaikan"
_unrecognized_args
. Selama argumen "tidak dikenal" ini tidak menggunakan awalan default Anda tidak akan mendengar keluhan dari parser.Menggunakan konfigurasi @ anutbu tetapi dengan standar
parse.parse_args()
, jika kami menjalankan program kami dengan argumen berikut.Kami akan memiliki pengumpulan data Namespaced ini untuk bekerja dengan.
Jika kami ingin awalan default
-
diabaikan, kami dapat mengubah ArgumentParser dan memutuskan bahwa kami akan menggunakan+
untuk argumen "yang dikenali".Perintah yang sama akan menghasilkan
Letakkan itu di pipa Anda dan merokok itu =)
nJoy!
sumber