Sys模块函数之多,我只能选取自己认为比较实用的一些函数列在此处。借马云找员工的说法,”找最合适的而不是最天才的”,这句话,我个人觉得在很多方面都能适应,学习也不在话下。Sys模块功能的确很多,但我们应该将重点放在那些功能才是最适合我们的,为此,我列的这些函数,就是我认为比较适合我以后开发的函数。
(1)sys.argv
很多人会想,我如何给我的程序在外部传递参数呢?这个,就可以实现。如:
Tesy.py
Import sys
Print sys.argv[number]
一般情况下,number为0是这个脚本的名字,1,2…则为命令行下传递的参数.如:
Test.py脚本内容:
import sys
print sys.argv[0]
print sys.argv[1]
print sys.argv[2]
print sys.argv[3]
那么
[root@databak scripts]# python test.py arg1 arg2 arg3
test.py
arg1
arg2
arg3
看到,对应的关系了吗?还有,在python.org模块参考手册说,如果在命令行下选用-c那么argv[0]= -c 看下,
[root@databak scripts]# python -c "import sys;print sys.argv[0];print sys.argv[1]" arg1
-c
arg1
如果大家不明白,可以参考下man python
SYNOPSIS
python [ -d ] [ -E ] [ -h ] [ -i ] [ -m module-name ] [ -O ]
[ -Q argument ] [ -S ] [ -t ] [-u ]
[ -v ] [ -V ] [ -W argument ] [-x ]
[ -c command | script | - ] [ arguments ]
(2)sys.platform
大家都知道,当今的程序比较流行的是跨平台。简单的说就是这段程序既可以在windows下,换到linux下也可以不加修改的运行起来,听起来就不错。所以,这个函数就可以派上用场了。
假设,我们想实现一个清除终端,linux下用clear, windows下用cls
Ostype=sys.platform()
If ostype==”linux” or ostype==”linux2”:
Cmd=”clear”
Else:
Cmd=”cls”
(3) sys.exit(n)
执行至主程序的末尾时,解释器会自动退出. 但是如果需要中途退出程序, 你可以调用sys.exit 函数, 它带有一个可选的整数参数返回给调用它的程序. 这意味着你可以在主程序中捕获对sys.exit 的调用。(注:0是正常退出,其他为不正常,可抛异常事件供捕获!)
import sys
def exitfunc(value):
'''Clear function'''
print value
sys.exit(0)
print "hello"
try:
sys.exit(1)
except SystemExit,value:
exitfunc(value)
print "come?"
输出结果:
[root@databak scripts]# python test.py
hello
以下是python.org库参考手册中,摘抄来的,供参考。
Exit from Python. This is implemented by raising the SystemExitexception, so cleanup actions specified by finally clauses of
try statements are honored, and it is possible to intercept the exit attempt at an outer level. The optional argument
arg can be an integer giving the exit status (defaulting to zero), or another type of object. If it is an integer, zero is considered “successful termination” and any nonzero value is considered “abnormal termination” by shells and the like. Most systems
require it to be in the range 0-127, and produce undefined results otherwise. Some systems have a convention for assigning specific meanings to specific exit codes, but these are generally underdeveloped; Unix programs generally use 2 for command line syntax
errors and 1 for all other kind of errors. If another type of object is passed, None is equivalent to passing zero, and any other object is printed to sys.stderrand results in an exit code of 1. In particular, sys.exit("some
error message") is a quick way to exit a program when an error occurs.
大概意思是说,sys.exit从python程序中退出,将会产生一个systemExit异常,可以为此做些清除除理的工作。这个可选参数默认正常退出状态是0,以数值为参数的范围为:0-127。其他的数值为非正常退出,还有另一种类型,在这里展现的是strings对象类型。
(4)sys.path
大家对模块都有一定了解吧?大家在使用模块的某一个功能前,是不是需要导入呢?答案是需要。那import,__import__命令就不用提干嘛的了吧。那大家在执行import module_name的时候,python内部发生了什么呢?简单的说,就是搜索module_name。根据sys.path的路径来搜索module.name
>>> sys.path
['', '/usr/local/lib/python24.zip', '/usr/local/lib/python2.4', '/usr/local/lib/python2.4/plat-freebsd4', '/usr/local/lib/python2.4/lib-tk', '/usr/local/lib/python2.4/lib-dynload', '/usr/local/lib/python2.4/site-packages']
大家以后写好的模块就可以放到上面的某一个目录下,便可以正确搜索到了。当然大家也可以添加自己的模块路径。Sys.path.append(“mine module path”).
(5)sys.modules
This is a dictionary that maps module names to modules which have already been loaded. This can be manipulated to force reloading of modules and other tricks.
Python.org手册里已经说的很明白了。
For names in sys.modules.keys():
If names != ’sys’:
……
(6)sys.stdin,sys.stdout,sys.stderr
stdin , stdout , 以及stderr 变量包含与标准I/O 流对应的流对象. 如果需要更好地控制输出,而print 不能满足你的要求, 它们就是你所需要的. 你也可以替换它们, 这时候你就可以重定向输出和输入到其它设备( device ), 或者以非标准的方式处理它们
从网上摘抄的文章,供大家参考:
#testing stdout



print 'Hello World!'

运行hello.py就会在标准输出的屏幕上打印 Hello World!, 我们再编一个简单的标准输入的小程序 sayhi.py:

#testing stdin



print 'Hi, %s!' % raw_input('Please enter your name:')

当你用键盘输入你的名字后,程序在屏幕上输出Hi,[你的名字]!, 这就是从标准输入:键盘获取信息,再输出到标准输出:屏幕的例子。

那么上面的例子中print 和 raw_input是如何与标准输入/输出流建立关系的呢?

其实Python程序的标准输入/输出/出错流定义在sys模块中,分别 为: sys.stdin, sys.stdout, sys.stderr

上面的程序分别与下列的程序是一样的:

import sys



sys.stdout.write('Hello World!')

import sys



print 'Please enter your name:',

name=sys.stdin.readline()[:-1]

print 'Hi, %s!' % name



那么sys.stdin, sys.stdout, stderr到底是什么呢?我们在Python运行环境中输入以下代码:

import sys

for f in (sys.stdin, sys.stdout, sys.stderr): print f

输出为:

<open file '<stdin>', mode 'r' at 892210>

<open file '<stdout>', mode 'w' at 892270>

<open file '<stderr>', mode 'w at 8922d0>



由此可以看出stdin, stdout, stderr在Python中无非都是文件属性的对象,他们在Python启动时自动与Shell 环境中的标准输入,输出,出错关联。

而Python程序的在Shell中的I/O重定向与本文开始时举的DOS命令的重定向完全相同,其实这种重定向是由Shell来提供的,与Python 本身并无关系。那么我们是否可以在Python程序内部将stdin,stdout,stderr读写操作重定向到一个内部对象呢?答案是肯定的。

Python提供了一个StringIO模块来完成这个设想,比如:

from StringIO import StringIO

import sys

buff =StringIO()



temp = sys.stdout #保存标准I/O流

sys.stdout = buff #将标准I/O流重定向到buff对象

print 42, 'hello', 0.001



sys.stdout =temp #恢复标准I/O流

print buff.getvalue()

python的sys模块的更多相关文章

  1. python之sys模块详解

    python之sys模块详解 sys模块功能多,我们这里介绍一些比较实用的功能,相信你会喜欢的,和我一起走进python的模块吧! sys模块的常见函数列表 sys.argv: 实现从程序外部向程序传 ...

  2. python之sys模块

    38.python的sys模块: 用于提供对Python解释器相关的操作: 1 2 3 4 5 6 7 8 9 sys.argv           命令行参数List,第一个元素是程序本身路径 sy ...

  3. Python中sys模块

    Python的sys模块提供访问解释器使用或维护的变量,和与解释器进行交互的函数.通俗来讲,sys模块负责程序与python解释器的交互,提供了一系列的函数和变量,用于操控python运行时的环境. ...

  4. python学习笔记27(python中sys模块的使用)

    sys.argv           命令行参数List,第一个元素是程序本身路径 sys.modules.keys() 返回所有已经导入的模块列表 sys.exc_info()     获取当前正在 ...

  5. 10 python os&sys 模块

    1.os模块 os模块提供了很多允许你的程序与操作系统直接交互的功能 os模块的主要功能:处理文件和目录,系统相关,执行命令,管理进程 检验给出的路径是否是一个文件:os.path.isfile() ...

  6. Python 使用sys模块

      你已经学习了如何在你的程序中定义一次函数而重用代码.如果你想要在其他程序中重用很多函数,那么你该如何编写程序呢?你可能已经猜到了,答案是使用模块.模块基本上就是一个包含了所有你定义的函数和变量的文 ...

  7. [ python ] 使用sys模块实现进度条

    在写网络IO传输的时候, 有时候需要进度条来显示当前传输进度,使用 sys 模块就可以实现: sys.stdout.write() 这个函数在在控制台输出字符串不会带任何结尾,这就意味着这个输出还没有 ...

  8. Python OS & sys模块

    os模块(* * * *) os模块是与操作系统交互的一个接口 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname" ...

  9. Python 的 sys 模块常用方法?

    总结就是,os模块负责程序与操作系统的交互,提供了访问操作系统底层的接口; sys模块负责程序与python解释器的交互,提供了一系列的函数和变量,用于操控python的运行时环境. sys.argv ...

随机推荐

  1. Mybatis自动生成实体类和实体映射工具

    Mybatis Mysql生成实体类 用到的Lib包: mybatis-generator-core-1.3.2.jarmysql-connector-java-5.1.30.jar 1. 创建一个文 ...

  2. Noip2017 普及 T3 Chess

    神奇的场上原码 #include<iostream> #include<cstdio> #include<cstring> #include<queue> ...

  3. 小程序上拉下拉共存时不可使用scroll-view的解决方法

    使用 bindscrolltolower ,必须搭配使用的 scroll-view 会导致小程序 "enablePullDownRefresh": true 下拉不能使用. 解决方 ...

  4. LinkedList源码和并发问题分析

    1.LinkedList源码分析 LinkedList的是基于链表实现的java集合类,通过index插入到指定位置的时候使用LinkedList效率要比ArrayList高,以下源码分析是基于JDK ...

  5. 小知识点 取消button动作 和取巧按钮高亮

      如果让按钮在点击时不变暗 进行下面设置:   如果使butten失去动画效果进行下面设置:(一般用于图片+文字,效果等于可以加图片班的label,当然label不能加图片)

  6. Python 性能剖分工具

    Python 性能剖分工具 眼看着项目即将完成,却被测试人员告知没有通过性能测试,这种情况在开发中屡见不鲜.接下来的工作就是加班加点地找出性能瓶颈,然后进行优化,再进行性能测试,如此这般周而复始直到通 ...

  7. 自定义View实现五子棋游戏

    成功的路上一点也不拥挤,因为坚持的人太少了. ---简书上看到的一句话 未来请假三天顺带加上十一回家结婚,不得不说真是太坑了,去年婚假还有10天,今年一下子缩水到了3天,只能赶着十一办事了. 最近还在 ...

  8. Python 文本转语音

    文本转语音,一般会用在无障碍开发.下面介绍如何使用Python实现将文本文件转换成语音输出. 准备 使用Speech API 原理 示例代码 小总结 pyttsx方式 原理 示例代码 小总结 pytt ...

  9. emysql add_poop() 超时出错

    emysql add_poop() 超时出错(金庆的专栏)sample/a_hello.erl 连接本机更改为连接局域网内的MySql服务器:    emysql:add_pool(hello_poo ...

  10. Android自定义处理崩溃异常

    用过安卓手机的用户以及安卓开发者们会时长碰到程序异常退出的情况,普通用户遇到这种情况,肯定非常恼火,甚至会骂一生垃圾软件,然后卸载掉.那么开发者们在开发过程中遇到这种情况给怎么办呢,当然,你不可能世界 ...