Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 用Gooey解析列表_Python_Python 2.7 - Fatal编程技术网

Python 用Gooey解析列表

Python 用Gooey解析列表,python,python-2.7,Python,Python 2.7,我有以下代码 import argparse from gooey import Gooey, GooeyParser def get_args(): """Get CLI arguments and options""" parser = GooeyParser(description='error test' , formatter_class=argparse.ArgumentDefaultsHelpFormatter)

我有以下代码

import argparse
from gooey import Gooey, GooeyParser


def get_args():
    """Get CLI arguments and options"""
    parser = GooeyParser(description='error test' ,
                         formatter_class=argparse.ArgumentDefaultsHelpFormatter)

    parser.add_argument('--input', help='List of values',
                        default=['a', 'b', 'c'])

    args = parser.parse_args()

    return args


@Gooey()
def main():

    args = get_args()

    l = args.input

    for count, each in enumerate(l):
        print each

if __name__ == "__main__":
    main()
不幸的是,它返回:

[
'
a
'
,

'
b
'
,

'
c
'
]
a
b
c
如果我使用相同的代码,但注释掉
@goey
装饰符,我会得到:

a
b
c
如果我这样做:

import argparse
import ast
from gooey import Gooey, GooeyParser


def get_args():
    """Get CLI arguments and options"""
    parser = GooeyParser(description='error test' ,
                         formatter_class=argparse.ArgumentDefaultsHelpFormatter)

    parser.add_argument('--input', help='List of values',
                        default=['a', 'b', 'c'])

    args = parser.parse_args()

    return args


@Gooey()
def main():

    args = get_args()

    l = ast.literal_eval(args.input)

    for count, each in enumerate(l):
        print each

if __name__ == "__main__":
    main()
它返回:

[
'
a
'
,

'
b
'
,

'
c
'
]
a
b
c
但是使用相同的代码并注释掉
@goey
装饰器会产生:

Traceback (most recent call last):
File "/Users/alex/Source/AT_analyzer/test.py", line 30, in <module>
main()
File "/Users/alex/Source/AT_analyzer/test.py", line 24, in main
l = ast.literal_eval(args.input)
File "/Users/alex/anaconda3/envs/at_analyzer_env/lib/python2.7/ast.py", line 80, in literal_eval
return _convert(node_or_string)
File "/Users/alex/anaconda3/envs/at_analyzer_env/lib/python2.7/ast.py", line 79, in _convert
raise ValueError('malformed string')
ValueError: malformed string
回溯(最近一次呼叫最后一次):
文件“/Users/alex/Source/AT_analyzer/test.py”,第30行,在
main()
文件“/Users/alex/Source/AT_analyzer/test.py”,第24行,在main中
l=ast.literal\u eval(args.input)
文件“/Users/alex/anaconda3/envs/at_analyzer_env/lib/python2.7/ast.py”,第80行,文本形式
返回\u转换(节点\u或字符串)
文件“/Users/alex/anaconda3/envs/at_analyzer_env/lib/python2.7/ast.py”,第79行,在
raise VALUERROR('格式错误的字符串')
ValueError:格式不正确的字符串

我希望能够使用相同的代码,使用和不使用
goey
。任何帮助都将不胜感激。

该问题与
结果中返回的数据类型有关。输入

下面的代码使用粘性,结果是

简单地注释
@goey
装饰器会导致results.input的数据类型更改为

下面是使用
@goey
装饰器以及注释掉它时的操作

import argparse
import ast
from gooey import Gooey, GooeyParser


def get_args():
    """Get CLI arguments and options"""
    parser = GooeyParser(description='error test',
                         formatter_class=argparse.ArgumentDefaultsHelpFormatter)

    parser.add_argument('--input', help='List of values',
                        default=['a', 'b', 'c'])

    results = parser.parse_args()

    return results


@Gooey()
def main():

    results = get_args()

    l = ast.literal_eval(str(results.input))

    for count, each in enumerate(l):
        print each

if __name__ == "__main__":
    main()
这是因为无论results.input是作为列表还是字符串返回,它都会显式转换为字符串,然后使用
ast.literal\u eval