我有一个脚本另存为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的语法吗?
答案 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')