sys.args
python使用命令行传递参数。程序中可以导入sys模块。然后使用sys.args即可获取传递而来的参数。
简单示例
import sysdef test_sys_args():if len(sys.argv) > 1:print(len(sys.argv) - 1)print(sys.argv)else:print('无参数输入')if __name__ == '__main__':test_sys_args()
执行
python test.py a 1 test
输出结果
3['test.py', 'a', '1', 'test']
sys.args实现从程序外部向程序传递参数。它的值是一个列表list。保存了通过命令行传递的各个参数。
第一个参数 即sys.argv[0] 是程序本身。
其它参数在命令行传入时使用空格分开。
参数格式
命令行参数之间使用空格 分开,如果参数本身包含空格,可以使用双引号"",(注,单引号’'不起作用,反而会被当做是参数的一部分)。如果参数中包含", 可以在命令行传递参数是使用 \ 转义字符。
(venv) > python test.py "a1" 'a2' "a 3" 'a 4' \"test\"6['test.py', 'a1', "'a2'", 'a 3', "'a", "4'", '"test"']
可以看到’‘括起来的参数’'是一起作为参数的一部分的,""括起来的参数是一个整体,会把引号内的空格当作参数一部分,不会分割参数。如果参数内包含双引号,那就只能使用\转义字符。
argparse
/3/library/argparse.html
argparse 是python自带的命令行参数解析包,可以用来方便地读取命令行参数,当你的代码需要频繁地修改参数的时候,使用这个工具可以将参数和代码分离开来,让你的代码更简洁,适用范围更广。
可以认为将sys.args中收集的参数做了一些封装处理。
具体使用可以网上搜索。比如
/piperck/p/8446580.html
命令行参数传递json数据
一般是不会有这个需求的,不会通过命令行参数来传递json数据的。最多是将json数据保存在一个文件中然后读取。
真的直接使用命令行参数传递json数据的话,由于json数据存在大量的"",想要将其作为一个整体字符串传入。必须将每个"前加上\转义字符。。这个想一想就不靠谱吧。。。
所以真的要传递json数据的话。可以先将就送数据进行base64加密,将加密后的base64字符串传入,python接收到参数后再base64解密得到正常的json数据。。