Python sys.argv[0]用法

时间:2022-09-01 21:25:52

看别人写的代码,发现喜欢用sys.argv[0]输入文件,比如说:

import sys
import numpy as np
import cv2

#主函数
if __name__ == "__main__":
    if len(sys.argv)>1:
        #输入图像
        img = cv2.imread(sys.argv[1],cv2.IMREAD_ANYCOLOR)
    else:
        print("Usage: python contours.py image")
 cv2.imshow("img",img)
 cv2.waitKey(0)
 cv2.destroyAllWindows()

这是一个简单的用Python3+OpenCV读取图片的代码。那么问题来了:sys.argv[1]之类的什么意思?怎么就读取了?
网上的教程大多就给了个代码让你自己体会,但我确实不懂,虽然C++也有类似argc、argv,argc用来统计程序运行时发送给面函数的命令行参数,后者一般标识为:char *argv[] 这是个字符串数组,用来存放指向的字符串参数的指针数组,每个元素指向一个参数。各成员含义:

  1. argv[0]指向程序运行的全路径名
  2. argv[1]指向在dos命令行中执行程序后的第一个字符串
  3. argv[2]指向执行程序名后的第二个字符串
  4. argv[3]指向执行程序名后的第三个字符串
  5. argv[argc]为NULL

但是扯远了。。。那么sys.argv[] 到底怎么用?我在Python里实际跑了下,来看看:

import sys

a = sys.argv[0]
print(a)

在IDE上生成一个代码文件02.py运行后:'D:\\Programs\\Python\\Python36\\02.py' 显然这是运行程序所在路径。在继续测试:在桌面上生成这个文件运行,其输出如下:'C:\\Users\\XXX\\Desktop\\01.py' 验证了我的想法。如同C++一样argv[0] 表示的是路径。再试试将0改为其他数字,可以发现它获取的是命令行输入的参数的,所以,它跟上面所述C++是一样的。

将上面argv[0] 改为argv[1] ,保存为01.py。打开cmd,进入01.py的目录。我的放在D盘,所以先输入D:,表示将盘符改为D。然后输入D:\Programs\Python\Python36 进入了我所放的01.py目录,这表示我将这文件放在了Python3.6安装根目录下。请根据实际情况修改。
这时命令提示符已经切入代码文件所在目录,先输入python,在输入空格键,再点击02.py文件,将其拖入cmd, 接着再拖入图片,回车,图片就显示出来了。