Argparse «Обязательные» необязательные аргументы -- python поле с участием argparse пол Связанный проблема

argparse “compulsory” optional arguments


33
vote

проблема

русский

argparse модуль имеет то, что называются «дополнительными» аргументами. Все аргументы, имя которого начинается с <код> - или <код> -- необязательно по умолчанию. Как правило, принудительные аргументы позиционы, и, следовательно, при запуске программы они не явно с именем .

Например, в сценарии, который имел:

 <код> parser.add_argument('language', help="Output language")   

Защита будет выглядеть так:

 <код> $ hello-world czech   

Иногда может быть приятнее иметь обязательный аргумент, прошедший по имени (например, сценарию вызовы, проще прочитать таким образом), но все же быть обязательным. I.e.

 <код> $ hello-world --use-lang czech   

Как добиться этого? Именные аргументы называются «необязательными» в argparse документации, что делает его звуком, как будто они могут быть обязательными. Есть ли способ сделать их обязательным?

Английский оригинал

Python's argparse module has what are called 'optional' arguments. All arguments whose name starts with - or -- are optional by default. Typically, compulsory arguments are positional, and hence when running the program, they are not explicitly named.

For example, in a script which had:

parser.add_argument('language', help="Output language") 

Invocations would look like:

$ hello-world czech 

It may sometimes be nicer to have a compulsory argument passed by name (e.g. scripted invocations are easier to read this way), but still be compulsory. i.e.

$ hello-world --use-lang czech 

How to achieve this? Named arguments are called 'optional' in the argparse documentation, which makes it sound like they cannot be compulsory. Is there a way to make them compulsory?

</div
     
 
 

Список ответов

41
 
vote
vote
Лучший ответ
 

Согласно канонической документации, можно объявить «Дополнительные» аргументы, которые являются обязательными Отказ Вы используете <код> private val mMoviesBooksGames = listOf( Game( "Dixit", "Give the perfect clue so most (not all) players guess the right surreal image card.", ImageView(this).apply { setImageResource(R.drawable.alias) }) ) 4 с именем аргумента <код> private val mMoviesBooksGames = listOf( Game( "Dixit", "Give the perfect clue so most (not all) players guess the right surreal image card.", ImageView(this).apply { setImageResource(R.drawable.alias) }) ) 5 :

 <код> private val mMoviesBooksGames = listOf( Game(         "Dixit",          "Give the perfect clue so most (not all) players guess the right surreal image card.",          ImageView(this).apply { setImageResource(R.drawable.alias) }) ) 6  
 

According to canonical documentation, it is possible to declare 'optional' arguments that are compulsory. You use the required named argument of add_argument:

parser.add_argument('--use-lang', required=True, help="Output language") 
</div
 
 
         
         

Связанный проблема

0  Почему мой скрипт Cron работает только один раз?  ( Why my cron script running just once ) 
Я пытаюсь запустить простой сценарий Python, используя команды cron. Я написал код, чтобы запускать свой скрипт Python в каждом 1 минуте и записывать вывод в ...

0  Как написать Pivot_Table в TXT файл Python  ( How to write the pivot table to txt file by python ) 
Я получаю pivot_table следующим образом: Есть места в таблице, Что я хочу написать на TXT: Как получить это? <код> WKWebView0 ...

2  Heroku Установить Letsencrypt - SU: ДОЛЖЕН БУДЬТ  ( Heroku install letsencrypt su must be run from a terminal ) 
Я пытаюсь создать сертификат SSL для Мой сайт , чтобы получить зеленый замок. . Во время передачи, как это сделать (никогда не делал ничего с сертификатами ...

0  Как умножить диагональные элементы друг другом, используя numpy?  ( How to multiply diagonal elements by each other using numpy ) 
Для целей этого упражнения давайте рассмотрим матрицу, где элемент <код> m_{i, j} дается правилом <код> m_{i, j} = i*j Если <код> i == j и <код > 0 else. ...

0  Python получает глобальные модули вместо местных внутри виртуальны  ( Python is getting global modules instead of local ones inside of virtualenv ) 
Это мой первый раз, используя virtualenv и mysqldb, и я получаю странную ошибку. После того, как я настрою этот Virtualenv, я установил MySQLDB изнутри Virtua...

3  Compile United с кодом ошибки 1 в / tmp / pip_build_root / uwsgi  ( Compile failed with error code 1 in tmp pip build root uwsgi ) 
Я пытаюсь следить за руководством в http: // uwsgi -docs.readtheDocks.org/en/latest/tutorials/django_and_nginx.html . Я получил все, что все работает TOHTTP:...

25  Найти сломанные симличины с Python  ( Find broken symlinks with python ) 
Если я звоню <код> os.stat() на сломанный <код> 9988777663 , python бросает <код> OSError исключение. Это делает его полезным для их поиска. Тем не менее, е...

1  dataframe или sqlctx (sqlcontext) сгенерировали "попытка вызвать пакет" ошибка  ( Dataframe or sqlctx sqlcontext generated trying to call a package error ) 
Я использую Spark 1.3.1. В Pyspark я создал Dataframe от RDD и зарегистрировал схему, что-то вроде этого: <код> dataLen=sqlCtx.createDataFrame(myrdd, ["id",...

12  Редактировать с помощью контекстного меню IDLE (Python GUI) в Windows & NBSP; 7  ( Edit with idle python gui context menu on windowsnbsp7 ) 
Под Windows XP у меня есть контекстное введение меню «Редактировать с простым» для python исходные файлы. Я пытался сделать эту работу под Windows 7 (32-бит...

1  Вызов функции Python с параметрами из скрипта оболочки  ( Calling a python function with options from shell script ) 
У меня есть сценарий Python, который принимает различные варианты из командной строки e.g. -Runs с графическим интерфейсом <код> python myscript.py -gui...

2  Spotipy Authentication не возвращает токен?  ( Spotipy authentication not returning token ) 
Все подходящие люди, я прочитал всю документацию, которую я могу найти в методах аутентификации Spotipy, и я собрал небольшой кусок кода, чтобы проверить его,...

1  Используйте файл в качестве аргумента для функции, которая подсчитывает, создает счет для каждой буквы в текстовом файле  ( Use a file as an argument for a function that counts creates a count for each le ) 
Моя программа прямо сейчас работает только для первого символа в текстовом файле и итерации бесконечно. Например, если первая буква в текстовом файле D, прогр...

1  Создание метода класса Python с использованием закрытия  ( Creating a python class method using a closure ) 
Я использую модуль unittest unittest module (как я довольно новый python), и я оказываюсь, что вы выполняете те же утверждения испытаний снова и снова. Я х...

1  Python: Tkinter не отображает мой образ или интерфейс  ( Python tkinter not displaying my image or ui ) 
Я пытаюсь создать пользовательский интерфейс с изображением в правом верхнем углу. Вот мой код: <код> import tkinter as tk import urllib.request import base...

1  Cprofile принимает много памяти  ( Cprofile taking a lot of memory ) 
Я пытаюсь профилировать мой проект в Python, но у меня заканчивается память. Сам мой проект довольно памяти, но даже пробеги полумана с возможностью погибан...

Связанный проблема

0  Почему мой скрипт Cron работает только один раз? 
0  Как написать Pivot_Table в TXT файл Python 
2  Heroku Установить Letsencrypt - SU: ДОЛЖЕН БУДЬТ 
0  Как умножить диагональные элементы друг другом, используя numpy? 
0  Python получает глобальные модули вместо местных внутри виртуальны 
3  Compile United с кодом ошибки 1 в / tmp / pip_build_root / uwsgi 
25  Найти сломанные симличины с Python 
1  dataframe или sqlctx (sqlcontext) сгенерировали "попытка вызвать пакет" ошибка 
12  Редактировать с помощью контекстного меню IDLE (Python GUI) в Windows & NBSP; 7 
1  Вызов функции Python с параметрами из скрипта оболочки 
2  Spotipy Authentication не возвращает токен? 
1  Используйте файл в качестве аргумента для функции, которая подсчитывает, создает счет для каждой буквы в текстовом файле 
1  Создание метода класса Python с использованием закрытия 
1  Python: Tkinter не отображает мой образ или интерфейс 
1  Cprofile принимает много памяти