argparse错误,解析必需的参数

时间:2019-03-06 00:59:54

标签: python python-3.x argparse

我有一个脚本另存为workspace.py

import argparse
import os

if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument('title', type=str, help="Will be displayed as the title")
    parser.add_argument('-f', '--folder', help='Point to the folder you want to read from (defaults to current folder in command prompt)', type=str, default=os.getcwd())
    args = parser.parse_args()
    print(args)
    someFunction(args.folder, args.title)

我从终端打来的电话:

workspace.py myTitle

导致错误

  

workspace.py:错误:需要以下参数:title

我不知道为什么会这样,因为我在终端中提供了“ myTitle”。如果我为title参数指定default=,则该参数与该值完美匹配。给我扔的部分是它甚至没有到达print(args),所以我看不到程序认为是什么,而是在args = parser.parse_args()

失败了。

我甚至尝试在以下位置重做确切的示例:https://docs.python.org/2/howto/argparse.html#introducing-positional-arguments(在下面复制)

import argparse
parser = argparse.ArgumentParser()
parser.add_argument("echo", help="echo the string you use here")
args = parser.parse_args()
print args.echo

运行

workspace.py hello

产生结果(在3.X的打印中添加括号之后)

  

workspace.py:错误:需要以下参数:echo

有什么我想念的吗?为什么不只打印“ hello”?我缺少某些特定于Python 3的语法吗?

1 个答案:

答案 0 :(得分:0)

如果我运行python workspace.py someString而不是workspace.py someString,我就可以使用它。我不明白此版本为何起作用,因为命令提示符显然将其识别为Python并正确运行,直到args = parser.parse_args()没有错误,就像'workspace.py' is not recognized as an internal or external command, operable program or batch file.一样,导入模块也没有问题。如果遇到类似错误,请考虑以下命令提示符会话。也许您只需要在命令中包含python,就像我必须...

C:\Users\rparkhurst\PycharmProjects\Workspace>workspace.py MyTitle
usage: workspace.py [-h] [-f FOLDER] title
workspace.py: error: the following arguments are required: title

C:\Users\rparkhurst\PycharmProjects\Workspace>python workspace.py MyTitle
Namespace(folder='C:\\Users\\rparkhurst\\PycharmProjects\\Workspace', title='MyTitle')