我正在制作自己的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"
执行它,这是正确的输出:
尽管当我尝试执行api url
而不将其作为String
传递时,我的输出还是有些奇怪:
我如何仅接受String
个参数?
到目前为止,我已经尝试过:
答案 0 :(得分:3)
问题不是python问题。只是您的URL包含一个&
,并且在linux / unix shell上,这要求在后台运行您的命令(并删除&
之后的数据)。这说明了[1]+ done
输出以及截断的命令行。
因此,必须引用您的参数以避免其被解释(或使用\&
)。 Un * x shell无法解决此问题(例如,可以在Windows shell中取消引用)