zoukankan      html  css  js  c++  java
  • python中的sys模块和sys.argv的使用

    一、sys模块

    sys是Python的一个「标准库」,也就是官方出的「模块」,是「System」的简写,封装了一些系统的信息和接口。

    sys.argv           命令行参数List,第一个元素是程序本身路径 
    sys.modules.keys() 返回所有已经导入的模块列表 
    sys.exc_info()     获取当前正在处理的异常类,exc_type、exc_value、exc_traceback当前处理的异常详细信息 
    sys.exit(n)        退出程序,正常退出时exit(0) 
    sys.hexversion     获取Python解释程序的版本值,16进制格式如:0x020403F0 
    sys.version        获取Python解释程序的版本信息 
    sys.maxint         最大的Int值 
    sys.maxunicode     最大的Unicode值 
    sys.modules        返回系统导入的模块字段,key是模块名,value是模块 
    sys.path           返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值 
    sys.platform       返回操作系统平台名称 
    sys.stdout         标准输出
    sys.stdin          标准输入
    sys.stderr         错误输出
    sys.exc_clear()    用来清除当前线程所出现的当前的或最近的错误信息
    sys.exec_prefix    返回平台独立的python文件安装的位置
    sys.byteorder      本地字节规则的指示器,big-endian平台的值是'big',little-endian平台的值是'little'
    sys.copyright      记录python版权相关的东西
    sys.api_version    解释器的C的API版本
    sys.version_info 
    >>> sys.version_info
    (2, 4, 3, 'final', 0) 'final'表示最终,也有'candidate'表示候选,表示版本级别,是否有后继的发行
    sys.displayhook(value)      如果value非空,这个函数会把他输出到sys.stdout,并且将他保存进__builtin__._.指在python的交互式解释器里,'_'代表上次你输入得到的结果,hook是钩子的意思,将上次的结果钩过来
    sys.getdefaultencoding()    返回当前你所用的默认的字符编码格式
    sys.getfilesystemencoding() 返回将Unicode文件名转换成系统文件名的编码的名字
    sys.setdefaultencoding(name)用来设置当前默认的字符编码,如果name和任何一个可用的编码都不匹配,抛出LookupError,这个函数只会被site模块的sitecustomize使用,一旦别site模块使用了,他会从sys模块移除
    sys.builtin_module_names    Python解释器导入的模块列表 
    sys.executable              Python解释程序路径 
    sys.getwindowsversion()     获取Windows的版本 
    sys.stdin.readline()        从标准输入读一行,sys.stdout.write("a") 屏幕输出a

    二、sys.argv的使用

    「argv」是「argument variable」参数变量的简写形式,一般在命令行调用的时候由系统传递给程序。

    sys.argv[]说是一个从程序外部获取参数的桥梁。我们从外部取得的参数可以是多个,所以获得的是一个列表(list),也就是说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
    #输出:[E:/MyScripts/Study/day10/sys-argv.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)

    以上代码输出:

    #以上代码输出结果是:
    ['E:/MyScripts/Study/day10/sys-argv.py']
    #下面是启动端口号为7878的一个本地服务
     * 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)
    E:MyScriptsStudyday10>python sys-argv.py --help ['sys-argv.py', '--help'] 这个python是用来测试的,运行的时候需要使用 python a.py port E:MyScriptsStudyday10>python sys-argv.py 2345 ['sys-argv.py', '2345'] * Serving Flask app "sys-argv" (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文件的时候传入的参数

  • 相关阅读:
    中介者模式(Mediator Pattern)
    状态模式
    命令模式(Command Pattern)
    迭代器模式(Iterator Pattern)
    解释器模式
    备忘录模式
    访问者模式(Visitor Patten)
    责任链模式(chainOfResponsibility)
    .net下安装 ZooKeeper.Net
    Zookeeper .Net客户端代码
  • 原文地址:https://www.cnblogs.com/blueteer/p/10277079.html
Copyright © 2011-2022 走看看