写设备自动化脚本,引入yaml文件的过程中遇到了这个引入的模块函数,网上查了许多,但发现这个问题的比较详细的解释只有少数版本,大部分都是转裁。看得一知半解的还是没真正明白,后来经过努力,多方求教明悟,就写下这个文章分享,希望能给求索过程中的同学启发。
###先说此函数使用方式(py3为例,yaml仅为字符型):python3 XXX.py yaml
主要是三种用法:
1.sys.argv[1]的用法:
import sys
a = sys.argv[1]
print(type(a),a)
输出:
<class 'str'> yaml
可以很清楚的看到,得到的是py文件后面输出的外部参数,字符型,把之前输入的参数赋值给了a,此参数可以是字符也可以是yaml文件等。
结论:sys.argv[1] 脚本第一个参数。
2.sys.argv[0]的用法:
import sys
a = sys.argv[0]
print(type(a),a)
输出:
<class 'str'> /home/XXX/rosworkspace/src/novatel/配置文件/XXX.py
可以知道sys.srgv[0]是输出py文件本身的路径或名称。
结论:[0]是代表当前所执行的脚本。
3.len(sys.argv)的含义:
len(sys.argv) == 1 代表当前脚本含有0个参数,意思就是没有给出参数。
而len(sys.argv) == 2 代表当前脚本含有1个参数,如果是想引入参数是正确的输出。
sys.argv里的参数其实就是一个列表,里边为用户输入的参数。