pyhton3 sys模块

本文介绍了Python中的sys模块,包括标准输入输出、命令行参数、路径管理等功能,并通过实例展示了如何使用这些功能。

Python常用模块之sys

sys模块提供了一系列有关Python运行环境的变量和函数。

1 )、 sys.stdin 标准输入流。
2 )、sys.stdout 标准输出流。
3 )、 sys.stderr 标准错误流。
4 )、 sys.path 查找模块所在目录的目录名列表。
5 )、 sys.argv 命令行的参数,包括脚本名称。
6 )、 sys.platform 返回当前系统平台,如:win32、Linux等。
7 )、 sys.exit(n)  退出程序,正常退出时exit(0)
8 )、 sys.version  获取Python解释器的版本信息
10 )、 sys.maxint  最大的Int值
11 )、 stdout.writr('please;')
12 )、 val = sys.stdin.readlin()[:-1]

常见用法

  • sys.argv
    可以用sys.argv获取当前正在执行的命令行参数的参数列表(list)。
变量解释
sys.argv[0]当前程序名
sys.argv[1]第一个参数
sys.argv[0]第二个参数

参考代码:

# encoding: utf-8
# filename: argv_test.py
import sys

# 获取脚本名字
print 'The name of this program is: %s' %(sys.argv[0]) # 获取参数列表 print 'The command line arguments are:' for i in sys.argv: print i # 统计参数个数 print 'There are %s arguments.'%(len(sys.argv)-1)

运行结果:

E:\p>python argv_test.py arg1 arg2 arg3
The name of this program is: argv_test.py
The command line arguments are:
argv_test.py
arg1
arg2
arg3
There are 3 arguments. 
  • sys.platform

获取当前执行环境的平台,如win32表示是Windows 32bit操作系统,linux2表示是linux平台;

# linux 
>>> import sys
>>> sys.platform
'linux2'

# windows >>> import sys >>> sys.platform 'win32'
  • sys.path

path是一个目录列表,供Python从中查找第三方扩展模块。在python启动时,sys.path根据内建规则、PYTHONPATH变量进行初始化。

>>> sys.path
['', 'E:\\Python27\\Lib\\idlelib', 'C:\\Windows\\system32\\python27.zip', 'E:\\Python27\\DLLs', 'E:\\Python27\\lib', 'E:\\Python27\\lib\\plat-win', 'E:\\Python27\\lib\\lib-tk', 'E:\\Python27', 'E:\\Python27\\lib\\site-packages']

有时候为了让python能够找到我们自己定义的模块,需要修改sys.path的内容,比如:

# 在path的开始位置 插入test
>>> sys.path.insert(0,'test')
>>> sys.path ['test', '', 'E:\\Python27\\Lib\\idlelib', 'C:\\Windows\\system32\\python27.zip', 'E:\\Python27\\DLLs', 'E:\\Python27\\lib', 'E:\\Python27\\lib\\plat-win', 'E:\\Python27\\lib\\lib-tk', 'E:\\Python27', 'E:\\Python27\\lib\\site-packages'] # 可以成功import test >>> import test # 找不到 other 这个模块 >>> import other Traceback (most recent call last): File "<pyshell#10>", line 1, in <module> import other ImportError: No module named other # 需要添加path >>> sys.path.insert(0,'other') >>> import other

也可以用sys.path.append(“mine module path”)来添加自定义的module。

  • sys.builtin_module_names

sys.builtin_module_names返回一个列表,包含内建模块的名字。如:

>>> import sys
>>> print sys.builtin_module_names
('__builtin__', '__main__', '_ast', '_bisect', '_codecs', '_codecs_cn', '_codecs_hk', '_codecs_iso2022', '_codecs_jp', '_codecs_kr', '_codecs_tw', '_collections', '_csv', '_functools', '_heapq', '_hotshot', '_io', '_json', '_locale', '_lsprof', '_md5', '_multibytecodec', '_random', '_sha', '_sha256', '_sha512', '_sre', '_struct', '_subprocess', '_symtable', '_warnings', '_weakref', '_winreg', 'array', 'audioop', 'binascii', 'cPickle', 'cStringIO', 'cmath', 'datetime', 'errno', 'exceptions', 'future_builtins', 'gc', 'imageop', 'imp', 'itertools', 'marshal', 'math', 'mmap', 'msvcrt', 'nt', 'operator', 'parser', 'signal', 'strop', 'sys', 'thread', 'time', 'xxsubtype', 'zipimport', 'zlib')

代码示例:

# encoding: utf-8
# find_module.py

import sys

# print sys.builtin_module_names

def find_module(module): if module in sys.builtin_module_names: print module," => ","__builtin__" else: print module,"=> ",__import__(module).__file__ find_module('os') find_module('sys') find_module('strop') find_module('zlib') find_module('string') # 运行结果: >>> ======================== RESTART: E:/p/find_module.py ======================== os => E:\Python27\lib\os.pyc sys => __builtin__ strop => __builtin__ zlib => __builtin__ string => E:\Python27\lib\string.pyc 
  • sys.exit(n)

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

# encoding: utf-8
import sys

print 'running...'

try: sys.exit(1) except SystemExit: print 'SystemExit exit 1' print 'exited'

运行结果:

>>> 
======================= RESTART: E:/p/sys_exit_test.py =======================
running...
SystemExit exit 1
exited

也可以自定义exitfunc方法,用于程序退出前调用,进行一些清理动作。
详细可以参考Python sys.exitfunc Examples

转载于:https://www.cnblogs.com/nuomin/p/7871684.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值