Python模块学习8-sys
阅读时间:全文 539 字,预估用时 3 分钟
创作日期:2017-08-09
上篇文章:Python模块学习9-datetime
下篇文章:工作一个月零两天
BEGIN
模块说明
sys是system的缩写,可知这个模块提供系统级的python程序的各类信息
常用属性和方法
命令 | 输出 | 介绍 |
---|---|---|
sys.platform | linux2 | 操作系统平台信息 |
sys.version | 2.7.6 (default, Oct 26 2016, 20:30:19) \n[GCC 4.8.4] | python版本信息 |
sys.version_info | sys.version_info(major=2, minor=7, micro=6, releaselevel=‘final’, serial=0) | python版本信息的元组形式 |
sys.executable | /usr/bin/python | python安装目录 |
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() | ascii | python执行环境默认编码 |
sys.setdefaultencoding(‘utf8’) | 设置python执行环境默认编码 | |
sys.getfilesystemencoding() | UTF-8 | python文件系统默认编码 |
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(”) | 37 | 0 |
sys.getsizeof(‘a’) | 38 | +1 |
sys.getsizeof(‘aa’) | 39 | +1 |
sys.getsizeof(‘aaa’) | 40 | +1 |
sys.getsizeof(list()) | 72 | 0 |
sys.getsizeof([0]) | 80 | +8 |
sys.getsizeof([0, 0]) | 88 | +8 |
sys.getsizeof([0, 0, 0]) | 96 | +8 |
sys.getsizeof(dict()) | 280 | 0 |
sys.getsizeof({‘a’:1}) | 280 | - |
sys.getsizeof({‘a’: 1, ‘b’: 2}) | 280 | - |
sys.getsizeof(tuple()) | 56 | 0 |
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修改了只能在当前命令行窗口下有效,但退出后失效了,那么可以通过下面方式操作:
- 新建配置文件:
touch ~/.pythonrc.py
- 向配置文件写入
import sys
sys.ps1 = '^_^ '
- 赋值环境变量:
export PYTHONSTARTUP=~/.pythonrc.py
此时打开python命令窗口可以看到命令输入提示符>>>已经变成^_^了,且自动引入了sys模块。
报UnicodeEncodeError错误时尝试解决方法
其实有一个问题:python文件行头默认要加#coding: utf-8
指明文本的编码格式,python执行py文件时就会知道文本内容的编码方式,既然文本的编码方式知道了干嘛不直接让执行环境的默认编码也设置成一样的?
import sys
reload(sys)
sys.setdefaultencoding('utf8')
FINISH
上篇文章:Python模块学习9-datetime
下篇文章:工作一个月零两天