Table of Contents:
  1. 模块说明
    1. 常用属性和方法
      1. 其它方法单独介绍
        1. sys.getsizeof(obj):返回对象所占用的内存大小,单位byte(8 bit)
          1. sys.getrefcount(obj):返回对象并引用的次数
            1. sys.argv:执行带参数命令时所有参数的集合
            2. python命令行自动配置
              1. 报UnicodeEncodeError错误时尝试解决方法

                Python模块学习8-sys

                Reading Time:The full text has 539 words, estimated reading time: 3 minutes
                Creation Date:2017-08-09
                Article Tags:
                Previous Article:Python模块学习9-datetime
                 
                BEGIN

                模块说明

                sys是system的缩写,可知这个模块提供系统级的python程序的各类信息

                常用属性和方法

                命令输出介绍
                sys.platformlinux2操作系统平台信息
                sys.version2.7.6 (default, Oct 26 2016, 20:30:19) \n[GCC 4.8.4]python版本信息
                sys.version_infosys.version_info(major=2, minor=7, micro=6, releaselevel=‘final’, serial=0)python版本信息的元组形式
                sys.executable/usr/bin/pythonpython安装目录
                sys.ps1’>>> ‘python命令行命令输入提示符
                sys.ps2’… ‘python命令行命令等待提示符
                sys.path[‘/path/to’, ‘/path/to’]python的环境变量
                sys.modules{‘module_name’: ‘module_info’}可用的模块
                sys.builtin_module_names[‘module1’, ‘module2’]所有内建模块
                sys.getdefaultencoding()asciipython执行环境默认编码
                sys.setdefaultencoding(‘utf8’)设置python执行环境默认编码
                sys.getfilesystemencoding()UTF-8python文件系统默认编码
                sys.exit()中断并退出python执行环境

                其它方法单独介绍

                sys.getsizeof(obj):返回对象所占用的内存大小,单位byte(8 bit)

                命令输出(byte)变动趋势
                sys.getsizeof(True)24
                sys.getsizeof(1)24
                sys.getsizeof(1111111)24
                sys.getsizeof(11.1111)24
                sys.getsizeof(”)370
                sys.getsizeof(‘a’)38+1
                sys.getsizeof(‘aa’)39+1
                sys.getsizeof(‘aaa’)40+1
                sys.getsizeof(list())720
                sys.getsizeof([0])80+8
                sys.getsizeof([0, 0])88+8
                sys.getsizeof([0, 0, 0])96+8
                sys.getsizeof(dict())2800
                sys.getsizeof({‘a’:1})280-
                sys.getsizeof({‘a’: 1, ‘b’: 2})280-
                sys.getsizeof(tuple())560
                sys.getsizeof((0,))72+8
                sys.getsizeof((0, 0,))80+8
                sys.getsizeof((0, 0, 0,))88+8

                本机测试为64位cpu,32位的应将对应数值除以2

                sys.getrefcount(obj):返回对象并引用的次数

                import sys
                obj = 1
                sys.getrefcount(obj) #608
                a = obj
                sys.getrefcount(obj) #609
                b = obj
                sys.getrefcount(obj) #610

                sys.argv:执行带参数命令时所有参数的集合

                # test.py
                import sys
                for i in xrange(len(sys.argv)):
                    print i, ':', sys.argv[i]
                """ python test.py ha he hahe
                输出
                0 : test.py
                1 : ha
                2 : he
                3 : hahe
                """

                python命令行自动配置

                有时候有特殊的需求,比如修改python命令行命令输入提示符>>>改成^_^,如果用sys.ps1修改了只能在当前命令行窗口下有效,但退出后失效了,那么可以通过下面方式操作:

                1. 新建配置文件:touch ~/.pythonrc.py
                2. 向配置文件写入
                import sys
                sys.ps1 = '^_^ '
                1. 赋值环境变量:export PYTHONSTARTUP=~/.pythonrc.py

                此时打开python命令窗口可以看到命令输入提示符>>>已经变成^_^了,且自动引入了sys模块。

                报UnicodeEncodeError错误时尝试解决方法

                其实有一个问题:python文件行头默认要加#coding: utf-8指明文本的编码格式,python执行py文件时就会知道文本内容的编码方式,既然文本的编码方式知道了干嘛不直接让执行环境的默认编码也设置成一样的?

                import sys
                reload(sys)
                sys.setdefaultencoding('utf8')
                FINISH
                Previous Article:Python模块学习9-datetime

                Random Articles
                Life Countdown
                default