如何在python中通过命令行给出元组

Posted

技术标签:

【中文标题】如何在python中通过命令行给出元组【英文标题】:how to give tuple via command line in python 【发布时间】:2021-01-19 00:58:24 【问题描述】:

我必须通过命令行输入一些参数。例如 tileGridSize、clipLimit 等通过命令行。这就是我的代码的样子;

#!/usr/bin/env python
import numpy as np
import cv2 as cv
import sys #import Sys. 
import matplotlib.pyplot as plt

img = cv.imread(sys.argv[1], 0) # reads image as grayscale
clipLimit = float(sys.argv[2])
tileGridSize = tuple(sys.argv[3])
clahe = cv.createCLAHE(clipLimit, tileGridSize)
cl1 = clahe.apply(img)

# show image
cv.imshow('image',cl1)
cv.waitKey(0)
cv.destroyAllWindows()

如果我传递如下参数(我想给出 (8, 8) 元组);

python testing.py 图片.jpg 3.0 8 8

我收到以下错误。我了解错误但不知道如何解决。

TypeError: function takes exactly 2 arguments (1 given)

【问题讨论】:

天真的方式就像tileGridSize = tuple(int(sys.argv[3]), int(sys.argv[4])) 来处理您当前的输入。您是想在命令行中指定一个元组,还是只是将两个单独的参数组合成一个元组? 【参考方案1】:

我建议您查看argparse,这是处理命令行的标准包,但严格使用sys.argv

import sys


print(sys.argv[1], float(sys.argv[2]), tuple(map(int, sys.argv[3:])))
$ python testing.py picture.jpg 3.0 8 8
> picture.jpg 3.0 (8, 8)

会发生什么:

sys.argv[3:] 获取所有 args 的列表,包括第 4 个(索引 3map(int, sys.argv[3:])int 函数应用于列表中的所有项目 tuple(...)map 的生成器转换为适当的元组

【讨论】:

以上是关于如何在python中通过命令行给出元组的主要内容,如果未能解决你的问题,请参考以下文章

如何在熊猫/python中的行标题中通过部分搜索对数据集进行排序

如何在Windows中通过Cygwin来使用Linux命令行

在C中通过命令行传递整数?

如何在Linux命令行中通过SMTP服务器发送电子邮件

如何在Linux中通过命令查看域名对应的IP

在 PyCharm 中通过以前的命令进行控制台选项卡