python argparse: unrecognized arguments
up vote
20
down vote
favorite
When I run parsePlotSens.py -s bw hehe
, it says that hehe
is an unrecognized argument. However, if I run parsePlotSens.py hehe -s bw
, it's OK. Ideally, I would like it work for both cases.
Any tips? The following is my code:
if __name__ == '__main__' :
parser = argparse.ArgumentParser(prog='parsePlotSens');
parser.add_argument('-s', '--sort', nargs =1, action = 'store', choices = ['mcs', 'bw'], default='mcs', help=sorthelp)
parser.add_argument('filename', nargs ='+', action = 'store')
option = parser.parse_args(sys.argv)
python argparse
add a comment |
up vote
20
down vote
favorite
When I run parsePlotSens.py -s bw hehe
, it says that hehe
is an unrecognized argument. However, if I run parsePlotSens.py hehe -s bw
, it's OK. Ideally, I would like it work for both cases.
Any tips? The following is my code:
if __name__ == '__main__' :
parser = argparse.ArgumentParser(prog='parsePlotSens');
parser.add_argument('-s', '--sort', nargs =1, action = 'store', choices = ['mcs', 'bw'], default='mcs', help=sorthelp)
parser.add_argument('filename', nargs ='+', action = 'store')
option = parser.parse_args(sys.argv)
python argparse
add a comment |
up vote
20
down vote
favorite
up vote
20
down vote
favorite
When I run parsePlotSens.py -s bw hehe
, it says that hehe
is an unrecognized argument. However, if I run parsePlotSens.py hehe -s bw
, it's OK. Ideally, I would like it work for both cases.
Any tips? The following is my code:
if __name__ == '__main__' :
parser = argparse.ArgumentParser(prog='parsePlotSens');
parser.add_argument('-s', '--sort', nargs =1, action = 'store', choices = ['mcs', 'bw'], default='mcs', help=sorthelp)
parser.add_argument('filename', nargs ='+', action = 'store')
option = parser.parse_args(sys.argv)
python argparse
When I run parsePlotSens.py -s bw hehe
, it says that hehe
is an unrecognized argument. However, if I run parsePlotSens.py hehe -s bw
, it's OK. Ideally, I would like it work for both cases.
Any tips? The following is my code:
if __name__ == '__main__' :
parser = argparse.ArgumentParser(prog='parsePlotSens');
parser.add_argument('-s', '--sort', nargs =1, action = 'store', choices = ['mcs', 'bw'], default='mcs', help=sorthelp)
parser.add_argument('filename', nargs ='+', action = 'store')
option = parser.parse_args(sys.argv)
python argparse
python argparse
edited Dec 11 '17 at 21:56
alex
2,46053166
2,46053166
asked Jun 15 '13 at 0:14
Yan Zhu
1,27021330
1,27021330
add a comment |
add a comment |
4 Answers
4
active
oldest
votes
up vote
37
down vote
accepted
Do not pass sys.argv
as an argument to parse_args
. Just use
option = parser.parse_args()
If you do pass sys.argv
to parse_args
, then the path or name of the script itself is the first item in sys.argv
and thus becomes the value of option.filename
. The hehe
then becomes an unknown argument.
If you omit sys.argv
then parse_args
parses sys.argv
as expected.
11
Alternatively you can call parser.parse_args(sys.argv[1:]). Internally argparse does just that.
– MarioVilas
Dec 14 '13 at 1:54
add a comment |
up vote
5
down vote
Also, as a complement to unutbu's answer, storing the arguments in a dictionary this way makes the tests easy:
args = vars(parser.parse_args())
print args
Prints the dictionary:
{'sort': ['bw'], 'filename': ['hehe']}
Like :
if args['sort'] == 'bw':
# code here
...
add a comment |
up vote
4
down vote
You can get around this by allowing unknown arguments
Replace
args = parser.parse_args()
with
args, unknown = parser.parse_known_args()
add a comment |
up vote
0
down vote
My situation not same with the question, but the error is same.
My situation:
- I have a remote dev(SFTP) with windows pycharm, and upload to run with linux.
the python command have some line break with
in my bash file, like
python args_config.py
--arg1="hello"
--arg2="world"
and raise a python argparse: unrecognized arguments
args not found error.
the problem is the bash file line breaking is different in windows and linux,
just setting with pycharm File -> Line Separators -> LF - Unix and OS X (n)
upload to linux and run bash file, it works!
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f17118999%2fpython-argparse-unrecognized-arguments%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
4 Answers
4
active
oldest
votes
4 Answers
4
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
37
down vote
accepted
Do not pass sys.argv
as an argument to parse_args
. Just use
option = parser.parse_args()
If you do pass sys.argv
to parse_args
, then the path or name of the script itself is the first item in sys.argv
and thus becomes the value of option.filename
. The hehe
then becomes an unknown argument.
If you omit sys.argv
then parse_args
parses sys.argv
as expected.
11
Alternatively you can call parser.parse_args(sys.argv[1:]). Internally argparse does just that.
– MarioVilas
Dec 14 '13 at 1:54
add a comment |
up vote
37
down vote
accepted
Do not pass sys.argv
as an argument to parse_args
. Just use
option = parser.parse_args()
If you do pass sys.argv
to parse_args
, then the path or name of the script itself is the first item in sys.argv
and thus becomes the value of option.filename
. The hehe
then becomes an unknown argument.
If you omit sys.argv
then parse_args
parses sys.argv
as expected.
11
Alternatively you can call parser.parse_args(sys.argv[1:]). Internally argparse does just that.
– MarioVilas
Dec 14 '13 at 1:54
add a comment |
up vote
37
down vote
accepted
up vote
37
down vote
accepted
Do not pass sys.argv
as an argument to parse_args
. Just use
option = parser.parse_args()
If you do pass sys.argv
to parse_args
, then the path or name of the script itself is the first item in sys.argv
and thus becomes the value of option.filename
. The hehe
then becomes an unknown argument.
If you omit sys.argv
then parse_args
parses sys.argv
as expected.
Do not pass sys.argv
as an argument to parse_args
. Just use
option = parser.parse_args()
If you do pass sys.argv
to parse_args
, then the path or name of the script itself is the first item in sys.argv
and thus becomes the value of option.filename
. The hehe
then becomes an unknown argument.
If you omit sys.argv
then parse_args
parses sys.argv
as expected.
answered Jun 15 '13 at 0:35
unutbu
539k9911541222
539k9911541222
11
Alternatively you can call parser.parse_args(sys.argv[1:]). Internally argparse does just that.
– MarioVilas
Dec 14 '13 at 1:54
add a comment |
11
Alternatively you can call parser.parse_args(sys.argv[1:]). Internally argparse does just that.
– MarioVilas
Dec 14 '13 at 1:54
11
11
Alternatively you can call parser.parse_args(sys.argv[1:]). Internally argparse does just that.
– MarioVilas
Dec 14 '13 at 1:54
Alternatively you can call parser.parse_args(sys.argv[1:]). Internally argparse does just that.
– MarioVilas
Dec 14 '13 at 1:54
add a comment |
up vote
5
down vote
Also, as a complement to unutbu's answer, storing the arguments in a dictionary this way makes the tests easy:
args = vars(parser.parse_args())
print args
Prints the dictionary:
{'sort': ['bw'], 'filename': ['hehe']}
Like :
if args['sort'] == 'bw':
# code here
...
add a comment |
up vote
5
down vote
Also, as a complement to unutbu's answer, storing the arguments in a dictionary this way makes the tests easy:
args = vars(parser.parse_args())
print args
Prints the dictionary:
{'sort': ['bw'], 'filename': ['hehe']}
Like :
if args['sort'] == 'bw':
# code here
...
add a comment |
up vote
5
down vote
up vote
5
down vote
Also, as a complement to unutbu's answer, storing the arguments in a dictionary this way makes the tests easy:
args = vars(parser.parse_args())
print args
Prints the dictionary:
{'sort': ['bw'], 'filename': ['hehe']}
Like :
if args['sort'] == 'bw':
# code here
...
Also, as a complement to unutbu's answer, storing the arguments in a dictionary this way makes the tests easy:
args = vars(parser.parse_args())
print args
Prints the dictionary:
{'sort': ['bw'], 'filename': ['hehe']}
Like :
if args['sort'] == 'bw':
# code here
...
edited Jun 15 '13 at 0:41
answered Jun 15 '13 at 0:24
Gauthier Boaglio
7,68523567
7,68523567
add a comment |
add a comment |
up vote
4
down vote
You can get around this by allowing unknown arguments
Replace
args = parser.parse_args()
with
args, unknown = parser.parse_known_args()
add a comment |
up vote
4
down vote
You can get around this by allowing unknown arguments
Replace
args = parser.parse_args()
with
args, unknown = parser.parse_known_args()
add a comment |
up vote
4
down vote
up vote
4
down vote
You can get around this by allowing unknown arguments
Replace
args = parser.parse_args()
with
args, unknown = parser.parse_known_args()
You can get around this by allowing unknown arguments
Replace
args = parser.parse_args()
with
args, unknown = parser.parse_known_args()
answered Jan 2 at 7:58
FacePalm
2,37922230
2,37922230
add a comment |
add a comment |
up vote
0
down vote
My situation not same with the question, but the error is same.
My situation:
- I have a remote dev(SFTP) with windows pycharm, and upload to run with linux.
the python command have some line break with
in my bash file, like
python args_config.py
--arg1="hello"
--arg2="world"
and raise a python argparse: unrecognized arguments
args not found error.
the problem is the bash file line breaking is different in windows and linux,
just setting with pycharm File -> Line Separators -> LF - Unix and OS X (n)
upload to linux and run bash file, it works!
add a comment |
up vote
0
down vote
My situation not same with the question, but the error is same.
My situation:
- I have a remote dev(SFTP) with windows pycharm, and upload to run with linux.
the python command have some line break with
in my bash file, like
python args_config.py
--arg1="hello"
--arg2="world"
and raise a python argparse: unrecognized arguments
args not found error.
the problem is the bash file line breaking is different in windows and linux,
just setting with pycharm File -> Line Separators -> LF - Unix and OS X (n)
upload to linux and run bash file, it works!
add a comment |
up vote
0
down vote
up vote
0
down vote
My situation not same with the question, but the error is same.
My situation:
- I have a remote dev(SFTP) with windows pycharm, and upload to run with linux.
the python command have some line break with
in my bash file, like
python args_config.py
--arg1="hello"
--arg2="world"
and raise a python argparse: unrecognized arguments
args not found error.
the problem is the bash file line breaking is different in windows and linux,
just setting with pycharm File -> Line Separators -> LF - Unix and OS X (n)
upload to linux and run bash file, it works!
My situation not same with the question, but the error is same.
My situation:
- I have a remote dev(SFTP) with windows pycharm, and upload to run with linux.
the python command have some line break with
in my bash file, like
python args_config.py
--arg1="hello"
--arg2="world"
and raise a python argparse: unrecognized arguments
args not found error.
the problem is the bash file line breaking is different in windows and linux,
just setting with pycharm File -> Line Separators -> LF - Unix and OS X (n)
upload to linux and run bash file, it works!
answered Nov 10 at 8:56
Colin Wang
15124
15124
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f17118999%2fpython-argparse-unrecognized-arguments%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown