Bagaimana cara menambahkan flag opsional ke args baris perintah saya?
misalnya. jadi saya bisa menulis
python myprog.py
atau
python myprog.py -w
Saya mencoba
parser.add_argument('-w')
Tapi saya hanya mendapatkan pesan kesalahan yang mengatakan
Usage [-w W]
error: argument -w: expected one argument
yang saya ambil itu berarti bahwa ia menginginkan nilai argumen untuk opsi -w. Apa cara hanya menerima bendera?
Saya menemukan http://docs.python.org/library/argparse.html agak buram tentang pertanyaan ini.
python
command-line-arguments
argparse
interstar
sumber
sumber
Jawaban:
Seperti yang Anda miliki, argumen w mengharapkan nilai setelah -w pada baris perintah. Jika Anda hanya ingin membalik sakelar dengan menyetel variabel
True
atauFalse
, lihat http://docs.python.org/dev/library/argparse.html#action (khusus store_true dan store_false)dimana
action='store_true'
tersiratdefault=False
.Sebaliknya, Anda bisa memiliki
action='store_false'
, yang menyiratkandefault=True
.sumber
w
selaluFalse
.Menambahkan potongan cepat agar siap dijalankan:
Sumber: myparser.py
Pemakaian:
sumber
Berikut cara cepat untuk melakukannya, tidak akan memerlukan apa pun selain
sys
.. meskipun fungsionalitas terbatas:flag = "--flag" in sys.argv[1:]
[1:]
dalam kasus jika nama file lengkapnya adalah--flag
sumber
--flag
, maka itu akan berperilaku tak terduga, dan yang lebih buruk, adalah bahwa ini sering berakhir dengan cacat keamanan di jalan, ketika data yang tidak dipercaya berakhir menjadi diteruskan ke argv. Pada akhirnya, metode ini tidak seharusnya dilakukan. Pars parser nyata jauh lebih kuat ...