如果仅是字符串,如何获取python命令行参数

时间:2019-12-12 10:48:08

标签: python python-3.x

我正在制作自己的python CLI,我只想传递String参数

import sys
import urllib, json
# from .classmodule import MyClass
# from .funcmodule import my_function
def main():

    args = sys.argv[1:]
    #print('count of args :: {}'.format(len(args)))
    #for arg in args:
     #   print('passed argument :: {}'.format(arg))


    #always returns true even if i don't pass the argument as a "String"
    if(isinstance(args[0], str)): 
        print('JSON Body:')
        url = args[0]
        response = urllib.urlopen(url)
        data = json.loads(response.read())
        print(data)

    # my_function('hello world')
    # my_object = MyClass('Thomas')
    # my_object.say_name()
if __name__ == '__main__':
    main()

我用api "url"执行它,这是正确的输出:

enter image description here

尽管当我尝试执行api url而不将其作为String传递时,我的输出还是有些奇怪:

enter image description here

我如何仅接受String个参数?

到目前为止,我已经尝试过:

  • 找到了此解决方案here,但它对我不起作用(无法识别join()函数)

1 个答案:

答案 0 :(得分:3)

问题不是python问题。只是您的URL包含一个&,并且在linux / unix shell上,这要求在后台运行您的命令(并删除&之后的数据)。这说明了[1]+ done输出以及截断的命令行。

因此,必须引用您的参数以避免其被解释(或使用\&)。 Un * x shell无法解决此问题(例如,可以在Windows shell中取消引用)