我们经常使用python 脚本需要传递参数,例如:python test.py "hello"
,那么在test.py中如何接收到参数"hello"呢?可以使用sys.argv[]
来接收。详情如下:
# 接收参数脚本test.py
# test.py
import sys
def receive_args():
args01 = sys.argv[1]
print args01
receive_args()
执行此脚本:
python test.py hello
hello
查看sys.argv[]
属性,可知与列表方法一致,“argv” 即 “argument value” 是一个列表对象,其中存储的是在命令行调用 python 脚本是提供的 “命令行参数”。
>>> import sys
>>> dir(sys.argv)
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__delslice__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getslice__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__setslice__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
>>>
下面来看一下几个常见用法:
一、sys.argv[0]
sys.argv[0]
用来获取执行的脚本名称。
# test.py
import sys
def receive_args():
file_name = sys.argv[0]
print file_name
receive_args()
#python test.py
test.py
二、sys.argv[:]
sys.argv[:]
用来获取参数列表
import sys
def receive_args():
file_name = sys.argv[0]
all_args = sys.argv[:]
print file_name
print all_args
receive_args()
#python test.py "2023-03-14" "liming" "shopping"
test.py
['test.py', '2023-03-14', 'liming', 'shopping']
三、sys.argv[n]
n 代表数字1,2,3… 表示第几个参数,用来获取指定参数
import sys
def receive_args():
file_name = sys.argv[0]
all_args = sys.argv[:]
time = sys.argv[1]
who = sys.argv[2]
do_what = sys.argv[3]
print file_name
print all_args
print time
print who
print do_what
receive_args()
#python test.py "2023-03-14" "liming" "shopping"
test.py
['test.py', '2023-03-14', 'liming', 'shopping']
2023-03-14
liming
shopping
利用此特性可以获取所有参数:sys.argv[2:]
四、利用列表其他属性
下面仅使用append()
方法,其他类似,不再介绍
import sys
def receive_args():
file_name = sys.argv[0]
all_args = sys.argv[:]
time = sys.argv[1]
who = sys.argv[2]
do_what = sys.argv[3]
print file_name
print all_args
print time
print who
print do_what
all_args.append("morning")
print all_args
receive_args()
#python test.py "2023-03-14" "liming" "shopping"
test.py
['test.py', '2023-03-14', 'liming', 'shopping']
2023-03-14
liming
shopping
['test.py', '2023-03-14', 'liming', 'shopping', 'morning']
参考文档
1、https://blog.youkuaiyun.com/fancynthia/article/details/126271660