一、sys 模块
sys是Python的一个「标准库」,也就是官方出的「模块」,是「System」的简写,封装了一些系统的信息和接口。
官方的文档参考:https://docs.python.org/2/library/sys.html
中文版文档参考:http://xukaizijian.blog.163.com/blog/static/170433119201111625428624/
二、sys.argv介绍和基本使用
「argv」是「argument variable」参数变量的简写形式,一般在命令行调用的时候由系统传递给程序。这个变量其实是一个List列表,argv[0] 一般是“被调用的脚本文件名或全路径”,这个与操作系统有关,argv[1]和以后就是传入的系统命令参数。
其实是一个从程序外部获取参数的入口,这个“外部”很关键,一般我们在命令行中运行。因为我们从外部输入的参数可以是多个,也就是说sys.argv其实可以看作是一个列表,所以才能用[]提取其中的元素。其第一个元素是程序本身,随后才依次是外部给予的参数。
下面总结一下:
sys.argv[0]表示代码本身文件路径,所以参数从1开始.
sys.argv[1]表示第一个命令行参数
sys.argv[1:]表示从第一个命令行参数到输入的最后一个命令行参数
sys.argv[1][2:] 表示取第一个命令行参数,但是去掉前两个字节
三、实例
import sys print(sys.argv) #获取运行python文件的时候传入的参数,第1个参数,index是0 #输出:['D:/A-python学习/python3/python代码/day10/sys模块.py'] if len(sys.argv)>1: #如果参数大于1,证明给了参数 if sys.argv[1]=='--help': #如果第2个参数是--help quit('这个python是用来测试的,运行的时候需要使用 python a.py port') #quit表示运行完此句代码即退出,不继续运行下面的代码了 else: #否则传入的是port并赋值给port port = sys.argv[1] else: #如果没有传入参数,则port默认是7878 port = 7878 import flask server = flask.Flask(__name__) @server.route('/') def index(): return '<h1>首页</h1>' server.run(port=port)
#以上代码输出结果是: ['D:/A-python学习/python3/python代码/day10/sys模块.py'] * Serving Flask app "sys模块" (lazy loading) * Environment: production WARNING: Do not use the development server in a production environment. Use a production WSGI server instead. * Debug mode: off * Running on http://127.0.0.1:7878/ (Press CTRL+C to quit)
也可以在pycharm里的Terminal中运行命令
#在Terminal中写命令,先写了一个python sys模块.py --help,回车运行完成后,写了python sys模块.py 2345(传了port) D:A-python学习python3python代码day10>python sys模块.py --help ['sys模块.py', '--help'] 这个python是用来测试的,运行的时候需要使用 python a.py port D:A-python学习python3python代码day10>python sys模块.py 2345 ['sys模块.py', '2345'] * Serving Flask app "sys模块" (lazy loading) * Environment: production WARNING: Do not use the development server in a production environment. Use a production WSGI server instead. * Debug mode: off * Running on http://127.0.0.1:2345/ (Press CTRL+C to quit)
或者在pycharm中选择填写参数
sys.argv使用场景如,别人调用你的代码时,需要别人传参数(如端口号可以传使用人自己的端口号,这样网址的端口号就是他自己的端口号了),根据传的参数(如help)去执行对应的命令
作用:是获取到运行python文件的时候传入的参数