• python sys模块使用详情


     python常用模块目录

    sys模块提供了一系列有关Python运行环境的变量和函数。
    1、sys.argv
    可以用sys.argv获取当前正在执行的命令行参数的参数列表(list)。
    变量解释
    sys.argv[0]当前程序名
    sys.argv[1]第一个参数
    sys.argv[2]第二个参数
    len(sys.argv)-1 参数个数(减去文件名)

    1)
    import sys
    print(sys.argv)
    print(sys.argv[0])
    print(sys.argv[1])
    print("第二个参数:%s"%sys.argv[2])
    print("参数个数:%s"%(len(sys.argv)-1))
    -------------------结果:
    #python /root/mcw.py arg1 arg2
    ['/root/mcw.py', 'arg1', 'arg2']
    /root/mcw.py    #当前程序名
    arg1
    第二个参数:arg2
    参数个数:2
    2) 如果执行用的相对路径,返回的是相对路径
    print(sys.argv[0])
    ----------------结果:
    [root@xiaoma /root] test!
    #python ./mcw.py 
    ./mcw.py

    #sys.argv =['/root/mcw.py', 'arg1', 'arg2'] ,列表第一个元素为程序执行相对路径,第二个元素开始为程序传参

    2、sys.path
    返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值

    import sys
    print(sys.path)
    ---------------------结果:
    ['D:\aPython_full目录\小马过河的代码练习', 'C:\mcw', 'C:\mcw\venv\Scripts\python36.zip', 'C:\python3\DLLs', 'C:\python3\lib', 'C:\python3', 'C:\mcw\venv', 'C:\mcw\venv\lib\site-packages', 'C:\mcw\venv\lib\site-packages\setuptools-39.1.0-py3.6.egg', 'C:\mcw\venv\lib\site-packages\pip-10.0.1-py3.6.egg', 'C:\软件安装\PyCharm 2018.3.5\helpers\pycharm_matplotlib_backend']
    
    添加系统环境变量:
    import sys,os
    
    BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    print(BASE_DIR)
    #添加系统环境变量
    sys.path.append(BASE_DIR)
    print(sys.path)

    -------

    import sys
    sys.path.append("C:python3Scripts")
    print(sys.path)
    ------------------结果:
    ['D:\.........., 'C:\python3\Scripts']

    3、sys.platform
    获取当前执行环境的平台,如win32表示是Windows系统,linux2表示是linux平台

    print(sys.platform)
    -------------结果:
    win32  
    
    -------------结果:
    [root@xiaoma /root] test!
    #python mcw.py 
    linux2

    4、sys.exit(n)
    调用sys.exit(n)可以中途退出程序,当参数非0时,会引发一个SystemExit异常,从而可以在主程序中捕获该异常。

    #vim mcw.py 
    import sys
    sys.exit(3)
    ----------结果:
    [root@xiaoma /root] test!
    #python mcw.py 
    [root@xiaoma /root] test!
    #echo $?
    3

    5、sys.version
    获取Python解释程序的版本信息

    import sys
    print(sys.version)
    --------------结果:
    3.6.8 (tags/v3.6.8:3c6b436a57, Dec 23 2018, 23:31:17) [MSC v.1916 32 bit (Intel)]
    
    import sys
    print(sys.version)
    --------------结果:
    [root@xiaoma /root] test!
    #python mcw.py 
    2.7.5 (default, Nov  6 2016, 00:28:07) 
    [GCC 4.8.5 20150623 (Red Hat 4.8.5-11)]

    6、sys.getrefcount

     获取一个值的应用计数

    a = [11,22,33]
    b = a
    print(sys.getrefcount(a))
    --------------结果:
    3 #a,b,还有gerefcount方法三个都在使用这个列表

    7、sys.getrecursionlimit python默认支持的递归数量
    8、sys.stdout.write     可以做输出重定向

    for i in range(3):
        print("魔降风云变")
    import sys
    for i in range(3):
        sys.stdout.write('小马过河')
    -----------------结果:
    魔降风云变
    魔降风云变
    魔降风云变
    小马过河小马过河小马过河
    
    import sys
    for i in range(3):
        sys.stderr.write('小马过河')
    ------------------结果:
    小马过河小马过河小马过河

    stdout 是一个类文件对象;调用它的 write 函数可以打印出你给定的任何字符串。
    实际上,这就是 print 函数真正做的事情;它在你打印的字符串后面加上一个硬回车,然后调用 sys.stdout.write 函数。
    在最简单的例子中,stdout 和 stderr 把它们的输出发送到相同的地方
    和 stdout 一样,stderr 并不为你添加硬回车;如果需要,要自己加上。
    stdout 和 stderr 都是类文件对象,但是它们都是只写的。
    它们都没有 read 方法,只有 write 方法。然而,它们仍然是类文件对象,因此你可以将其它任何 (类) 文件对象赋值给它们来重定向其输出。

    9、sys.modules

    import sys,os
    print(sys.modules.keys())
    -----------------------结果;
    dict_keys(['builtins', 'sys', '_frozen_importlib', '_imp', '_warnings', '_thread', '_weakref', '_frozen_importlib_external', '_io', 'marshal', 'nt', 'winreg', 'zipimport', 'encodings', 'codecs', '_codecs', 'encodings.aliases', 'encodings.utf_8', '_signal', '__main__', 'encodings.latin_1', 'io', 'abc', '_weakrefset', 'site', 'os', 'errno', 'stat', '_stat', 'ntpath', 'genericpath', 'os.path', '_collections_abc', '_sitebuiltins', '_bootlocale', '_locale', 'encodings.gbk', '_codecs_cn', '_multibytecodec', 'sysconfig', 'encodings.cp437', 'sitecustomize'])

    参考链接:
    1)https://cloud.tencent.com/developer/article/1175267
    2)https://blog.csdn.net/u013176681/article/details/53607565

  • 相关阅读:
    消息中间件
    docker 安装elasticSearch6.7.1
    Curl实现ElasticSearch的增删改查
    docker 容器的mysql主从复制
    linux上docker安装centos7.2
    linux安装docker
    调用 CURL 使用正则抓取信息
    linux 一键安装lnmp环境
    laravel框架实现数据的删除和修改
    laravel 实现增 与查
  • 原文地址:https://www.cnblogs.com/machangwei-8/p/10718187.html
Copyright © 2020-2023  润新知