python命令行参数传递

sys.args

python使用命令行传递参数。程序中可以导入sys模块。然后使用sys.args即可获取传递而来的参数。

简单示例
import sys

def 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

https://docs.python.org/3/library/argparse.html

argparse 是python自带的命令行参数解析包,可以用来方便地读取命令行参数,当你的代码需要频繁地修改参数的时候,使用这个工具可以将参数和代码分离开来,让你的代码更简洁,适用范围更广。
可以认为将sys.args中收集的参数做了一些封装处理。

具体使用可以网上搜索。比如

https://www.cnblogs.com/piperck/p/8446580.html

命令行参数传递json数据

一般是不会有这个需求的,不会通过命令行参数来传递json数据的。最多是将json数据保存在一个文件中然后读取。

真的直接使用命令行参数传递json数据的话,由于json数据存在大量的"",想要将其作为一个整体字符串传入。必须将每个"前加上\转义字符。。这个想一想就不靠谱吧。。。

所以真的要传递json数据的话。可以先将就送数据进行base64加密,将加密后的base64字符串传入,python接收到参数后再base64解密得到正常的json数据。。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值