python - 如何获取 python 命令行参数(如果它只是一个字符串)

标签 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() 函数)

最佳答案

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

因此,您必须引用您的参数以避免它被解释(或使用 \&)。在 Un*x shell 中无法解决这个问题(例如,在 Windows shell 中可以不加引号地工作)

关于python - 如何获取 python 命令行参数(如果它只是一个字符串),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59302868/

相关文章:

python - 如何将行和列的特征成对组合成keras中的特征矩阵?

python - readline 与 for 循环问题

python - 使用 Python 3 从 Twitter API 检索请求 token

python - 如何模拟一个深度为两个导入的 Python 类?

python - 在python项目中使用相对路径读取文件

python-3.x - 有没有办法克隆 tkinter 小部件?

python - 在 Python 中列出所有 Google Drive 文件和文件夹并保存 ID

python - 使用 sagemaker api 调用端点时出错

python - 为什么使用 __eq__ 运算符多次评估 NotImplemented

python - 输出总是一个空列表