python - 如何在python中通过命令行给出元组
问题描述
我必须通过命令行输入一些参数。例如 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)
解决方案
我建议您查看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:]
获取所有参数的列表,包括第四个(索引3
)和之后map(int, sys.argv[3:])
将int
函数应用于列表中的所有项目tuple(...)
将map
的生成器转换为适当的元组
推荐阅读
- python - Python - 在数据框中查找相同 ID 的值
- linux - fscrypt - 启动时在加密文件夹中运行脚本
- pvlib - 调整时区以计算 solarPosition
- javascript - 同时使用 onmouseover 和 onmouseout 来扩展容器
- php - 在 PHP 中组合和排列两个不同数组的项
- java - 如何制作 JPanel 的副本,它的所有 jcomponents 都具有与原始面板相同的功能?
- drake - 在pydrake中对物体施加外力
- python - 无法解析剩余部分:来自“i[0].title”的“[0].title”
- java - JDK14'启动在源文件中声明的类'如何指定编码
- actions-on-google - Google Smart Home App 不会在收到 Report State 请求后实时更新设备状态。这是预期的吗?