使用解析时的语法错误

时间:2018-07-23 19:03:15

标签: python python-3.x command-line argparse

我的函数的名称是getTile.py。我正在尝试在python中使用argparse函数来从命令行解析内容。但是,该程序无法通过脚本的第二行。它一直在命令行中返回:

./getTile.py: line 19: syntax error near unexpected token `('
./getTile.py: line 19: `parser = argparse.ArgumentParser()

我正在关注python.org上的argparse柔和教程。另外,这是我的程序。

import argparse
parser = argparse.ArgumentParser()
parser.add_argument("X-coordinate", help="Please put in the X-coordinate of your point.", type=float)
xCoordinate=float(parser.X-coordinate)
def aFunction(var1):
    var1 = var1+5
    print(a)
afunction(xCoordinate)

2 个答案:

答案 0 :(得分:0)

这有效:

In [42]: import argparse
    ...: parser = argparse.ArgumentParser()
    ...: parser.add_argument("X_coordinate", help="Please put in the X-coordinate of your point.", type=float)
    ...: args = parser.parse_args('1.23'.split()) # simulate commandline
    ...: print(args)
    ...: xCoordinate=args.X_coordinate   # type already converted it to float
    ...: def aFunction(var1):
    ...:     var1 = var1+5
    ...:     print(a)
    ...: aFunction(xCoordinate)
    ...: 
    ...: 
Namespace(X_coordinate=1.23)
3.141592653589793

对于X-coordinate这样的目的,您必须使用getattr,因为这不是有效的变量名。但是对于职位,您不需要使用花哨的dest。一个简单的字符串也一样。 (对于可选项,可以使用“ --X坐标”之类的标记。)

我还删除了不必要的float

在测试过程中,我喜欢使用print(args)来清楚地了解解析器在做什么。

无法从您的代码中复制语法错误。

答案 1 :(得分:0)

该文件当前正在作为Shell脚本执行,从而导致错误。

尝试:

python ./getTile.py

或将其添加到标题(getTile.py中的第一行):

#!/bin/env python

添加添加执行权限:

chmod u+x getTile.py

然后尝试:

./getTile.py