我正在制作自己的 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
参数?
到目前为止我已经尝试过:
- 找到了此解决方案 here但它对我不起作用(无法识别 join() 函数)
最佳答案
问题不是 python 问题。只是您的 URL 包含 &
,并且在 linux/unix shell 上,这要求在后台运行您的命令(并且删除 &
之后的数据)。这解释了 [1]+ done
输出以及截断的命令行。
因此,您必须引用您的参数以避免它被解释(或使用 \&
)。在 Un*x shell 中无法解决这个问题(例如,在 Windows shell 中可以不加引号地工作)
关于python - 如何获取 python 命令行参数(如果它只是一个字符串),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59302868/