python sys.argv()---获取外部参数

转自https://www.cnblogs.com/linuxdazhao/p/6881892.html

 

Python的sys.argv使用说明

刚开始使用这个参数的时候,很不明白其含义.网上搜索很多都是贴的官网上面的一则实例,说看懂,就明白.可是,我看不懂.现在在回头看这个参数使用,并不是很麻烦.

举几个小例子就明白了.

创建一个脚本,内容如下

1  #conding:utf-8
2  import sys #导入sys模块
3  print(sys.argv[0]) # 打印sys.argv的第0个参数

来运行一下这个脚本,我们随便给他点参数,1个,2个,3个或更多都行.

1 $ python3.6 1234.py a b c d e f 
2 1234.py

得出结果就显示当前脚本名,这里我们就可以得出第一个结论.

sys.argv[0] 返回是的脚本

现在我们修改一下脚本, 内容如下

1 #conding:utf-8
2 import sys #导入sys模块
3 print(sys.argv[1]) # 打印sys.argv的第1个参数

执行如下

1 $ python3.6 1234.py a b c d e f 
2 a

得出结果就是第一个参数的值.通过这样类推,我们就是知道sys.argv参数的效果了.

返回脚本本身的名字及给定脚本的参数.

了解shell脚本编程的可以这样理解这些参数,sys.argv[0] 就是shell 脚本中的basename ,而sys.argv[1]....就是shell中的$1,$2.....

sys.argv也支持python字符串中的切片,我们还是先修改代码

示例1:

1 #conding:utf-8
2 import sys #导入sys模块
3 print(sys.argv[1:]) # 打印sys.argv的第1个参数及其以后所有参数,返回的值是一个list

结果如下:

$ python3.6 1234.py a b c d e f 
['a', 'b', 'c', 'd', 'e', 'f']

示例2:

1 #conding:utf-8
2 import sys #导入sys模块
3 print(sys.argv[1:3]) # 打印sys.argv的第1个参数到第三个参数,不包含第三个参数,返回的值是一个list

结果如下:

1 $ python3.6 1234.py a b c d e f 
2 ['a', 'b']

示例3:

#conding:utf-8
import sys #导入sys模块
print(sys.argv[1:5:2])
print(sys.argv[-1])
print(sys.argv[::-1])

结果如下

1 $ python3.6 1234.py a b c d e f 
2 ['a', 'c']
3 f
4 ['f', 'e', 'd', 'c', 'b', 'a', '1234.py']

上面示例使用了字符串的切片方法,需要先了解字符串的切片知识.

通过如上示例,应该明白sys.argv的使用和暂时的结果.

sys.argv就是将程序本身和给程序参数返回一个list,这个list中的索引为0的就是程序本身.因此里面的给sys.argv的参数就是list索引.

这个函数是我们写python脚本中最常用的一个函数.

### 关于 `sys.argv[-1]` 的使用及其行为 当处理 Python 命令行参数时,`sys.argv` 是一个字符串列表,其中包含了传递给脚本的所有命令行参数。列表中的第一个元素通常是脚本名称本身(即 `sys.argv[0]`),后续元素则是提供给该脚本的具体参数。 对于负索引 `-1` 来说,在 Python 中访问序列类型的对象(如列表)可以采用正向或反向两种方式来指定位置。如果尝试获取 `sys.argv[-1]`,这实际上会返回列表里的最后一个成员[^1]。因此: - 如果没有任何额外的命令行参数被传入,则 `sys.argv[-1]` 将指向程序本身的文件名; - 若存在其他参数,则它代表的是最右边的那个实际输入项。 下面是一个简单示例展示如何利用 `sys.argv[-1]` 获取最后一条命令行参数的情况: ```python import sys if __name__ == "__main__": last_argument = sys.argv[-1] print(f'The last argument is {last_argument}') ``` 假设上述代码保存在一个名为 test.py 文件里,并通过如下指令执行: ```bash python test.py arg1 arg2 final_arg ``` 那么输出将会是:“The last argument is final_arg”。 需要注意的是,由于 `sys.argv` 总是以脚本路径作为首个元素,所以在仅有脚本自身的情况下,直接读取 `sys.argv[-1]` 可能不是最佳实践,因为这样无法区分是否有真正的外部参数传入。更推荐的做法是在正式应用之前先检查整个数组长度以确认确实有附加参数再做相应操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值