zoukankan      html  css  js  c++  java
  • sys模块的常见用法

      python的内置模块sys,提供了系统相关的一些变量和函数,在实际开发中,常见的有以下几种用法

    1. 获取操作系统信息

    >>> import sys
    # 在window上执行
    >>> sys.platform
    'win32'
    
    # 在linux上执行
    >>> sys.platform
    'linux2'

      经典的使用场景, 针对只适用于linux平台的代码,通过sys来判断当前操作系统是否符合要求。

    2. 获取python版本信息

    >>> sys.version
    '3.8.2 (tags/v3.8.2:7b3ab59, Feb 25 2020, 22:45:29) [MSC v.1916 32 bit (Intel)]'
    >>> sys.version_info
    sys.version_info(major=3, minor=8, micro=2, releaselevel='final', serial=0)
    >>> ver = sys.version_info
    >>> ver.major
    3
    >>> ver.minor
    8
    >>> ver.micro
    2

      对于python版本有限制的代码,可以通过以上方法来判断python版本是否符合要求。

    3. 获取编码方式

    >>> sys.getdefaultencoding()
    'utf-8'

      在python3中,默认的编码方式为utf8, 所以不再需要像python2那样,自己手动设置编码格式为utf-8。

    4. 标准输入,输出和错误流

      sys模块提供了变量来表示标准输入,输出和错误流,列表如下

    1. sys.stdin, 标准输入流
    2. sys.stdout,标准输出流
    3. sys.stderr,标准错误流
    import sys
    # sys.stdin   # 接收用户的输入,也就是读取键盘里输入的数据
    # stdin和stdout默认都是控制台
    # sys.stdout  # 标准输出
    # sys.stderr  # 错误输出
    
    s_in = sys.stdin   # input就是读取sys.stdin里的数据
    
    while True:
        content = s_in.readline()   # hello
    
        if content == '
    ':
            break
        print(content)
    
    
    sys.stdout = open('stdout.txt', 'w', encoding='utf8')
    print('hello')  # hello
    print('yes')
    
    sys.stderr = open('stderr.txt',  'w', encoding='utf8')
    print(1 / 0)  # 错误输出
    import sys
    
    
    s_in = sys.stdin 
    
    while True:
        content = s_in.readline().rstrip('
    ')   # hello
     ==> hello  
     ==> ' '
        if content == ' ':
            break
        print(content)

    5. 中断执行

      可以通过sys.exit函数来中断代码的执行,用法如下

    >>> sys.exit()

      该函数也可以添加一个参数,默认为0,表示正常退出,其他参数表示非正常退出,支持用字符串来自定义错误信息。

    6. sys.path

      该变量存储了python寻找模块的路径

    >>> sys.path
    ['', '/usr/lib/python35.zip', '/usr/lib/python3.5', '/usr/lib/python3.5/plat-x86_64-linux-gnu', '/usr/lib/python3.5/lib-dynload', '/usr/local/lib/python3.5/dist-packages', '/usr/lib/python3/dist-packages']

      可以在代码中动态修改sys.path列表中的元素,以达到成功导入某个模块的目的。

    7. sys.module

      该变量是一个字典,存储了已经导入的模块

    >>> import sys
    >>> sys.modules.keys()
    dict_keys(['abc', '_signal', 'sitecustomize', 'sys', '_collections_abc', '_weakrefset', '_sitebuiltins', '_weakref', 'sysconfig', 'encodings.utf_8', '__main__', 'apport_python_hook', '_sysconfigdata_m', 'posixpath', 'site', 'readline', 'stat', 'encodings', 'encodings.latin_1', 'zipimport', 'encodings.aliases', '_frozen_importlib_external', 'io', '_frozen_importlib', '_imp', 'atexit', 'os', '_stat', '_sysconfigdata', 'os.path', '_codecs', '_thread', 'posix', 'marshal', 'codecs', '_warnings', 'builtins', 'errno', 'genericpath', 'rlcompleter', '_io'])

    8. 获取命令行参数

      sys.argv是一个列表, 该列表存储了命令行参数,当采用脚本方式运行时,可以方便的处理命令行参数。假设一个python脚本名为test.py,其中的内容如下

    import sys
    for arg in sys.argv:
        print(arg)

      在操作系统中运行该脚本,会打印命令行参数的内容

    > python test.py arg1 arg2
    test.py
    arg1
    arg2

      可以看出,sys.argv的第一个元素是脚本的名字,接下来为传递给脚本的命令行参数。对于简单的脚本编程,用这种方式来捕获命令行参数是非常方便的。当然,对于命令行参数的传递,python还有更加强大的内置模块argparse, 在实际开发中也更常用该模块来处理命令行参数。

  • 相关阅读:
    sql语句
    CSS笔记
    mysql与oracle区别
    ajax请求aspx
    列表简单排序
    列表删除元素
    正则表达式简介
    创建列表
    动态串 StringBuilder
    StrinBuilder 追加 ,插入,删除,和替换操作
  • 原文地址:https://www.cnblogs.com/zhuzhaoli/p/14127092.html
Copyright © 2011-2022 走看看