【问题标题】:Getting tuple from command line arguments [duplicate]从命令行参数获取元组[重复]
【发布时间】:2020-07-11 19:22:17
【问题描述】:

有问题,

我正在编写一个 python 脚本,需要将参数从 cmd 传递给脚本。

我实现这个小功能的代码:

import sys

cars = sys.argv[1]

从命令行,我输入下一个命令:

python my_script.py ("Opel", "Nissan", 'Reno')

但是当我检查结果时,它不是一个元组,它是一个字符串。如何从参数中获取元组?

【问题讨论】:

  • @Sherzod 我已经阅读了这个主题,但它对我没有帮助,我需要这个案例的解决方案

标签: python python-3.x tuples


【解决方案1】:

命令行不知道 Python 数据结构。你从那里得到的只是字符串。但是,您可以在 Python 中创建它们:

cars = sys.argv[1].split()
# cars = tuple(sys.argv[1].split())

并将脚本调用为

python my_script.py "Opel Nissan Reno"

对于更高级的参数处理,您应该考虑使用argparse 模块。

【讨论】:

  • 我试过你的解决方案,但它不起作用,我用 isinstance 方法检查了 cars 变量以了解什么是类型。
  • 您是否看到我未注释的变体,它使它成为tuple 而不是list
【解决方案2】:

命令行没有定义元组。 从命令行试试这个

python my_script.py "Opel" "Nissan" "Reno"
import sys
# get from 1 to end
cars = sys.argv[1:]

【讨论】:

  • 你可以看到print(tuple(cars))的汽车
【解决方案3】:

这个怎么样:

import argparse

parser = argparse.ArgumentParser()
parser.add_argument('--data', nargs='+', type=str)
args = parser.parse_args()
my_tuple = tuple(args.data)
print(type(my_tuple)) # Check type

运行:

python my_script.py --data Opel Nissan Reno

输出:

<class 'tuple'>

【讨论】:

    猜你喜欢
    • 2014-02-15
    • 2020-02-23
    • 2014-01-03
    • 2017-04-16
    • 2016-03-21
    • 2013-02-18
    • 1970-01-01
    • 2014-06-12
    • 1970-01-01
    相关资源
    最近更新 更多