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

(1)sys.argv          获取当前正在执行的命令行参数的参数列表(list)

argv[0]表示代码本身的文件路径,最多只能传入两个命令行参数

(2) sys.modules.keys()   返回所有已经导入的模块列表

 >>> import os,sys
>>> sys.modules.keys()
dict_keys(['sys', 'builtins', '_frozen_importlib', '_imp', '_thread', '_warnings', '_weakref', 'zipimport',
'_frozen_importlib_external', '_io', 'marshal', 'nt', 'winreg', 'encodings', 'codecs', '_codecs', 'encodings.aliases',
'encodings.utf_8', '_signal', '__main__', 'encodings.latin_1', 'io', 'abc', '_abc', 'site', 'os', 'stat', '_stat',
'ntpath', 'genericpath', 'os.path', '_collections_abc', '_sitebuiltins', 'atexit'])

(3)sys.platform     获取当前执行环境的平台

(4)sys.path   path是一个目录列表,供Python从中查找第三方扩展模块。

(5) sys.exit(n)   调用sys.exit(n)可以中途退出程序,sys.exit(0)表示正常退出,n不为0时,会引发SystemExit异常,从而在主程序中可以捕获该异常。

 import sys
print("running ...")
try:
sys.exit(1)
except SystemExit:
print("SystemExit exit 1")
print("exited")

输出结果:

 E:\s14+\venv\Scripts\python.exe E:/s14/模块分类/SYS_M/test2.py
running ...
SystemExit exit 1
exited Process finished with exit code 0

(6)sys.version    获取python解释程序的版本信息

(7) sys.stdin, sys.stdout, sys.stderr    标准输入,标准输出,错误输出

标准输入:一般为键盘输入,stdin对象为解释器提供输入字符流,一般使用raw_input()和input()函数

 import sys
print("Please input you name:")
name = sys.stdin.readline()
print(name)
》》》》
Please input you name:
Xiao Ming #用户输入,然后Enter
Xiao Ming Process finished with exit code 0

标准输出:一般为屏幕。stdout对象接收到print语句产生的输出

 import sys

 sys.stdout.write("123456\n")
sys.stdout.flush()
执行结果
123456 Process finished with exit code 0

错误输出:一般是错误信息,stderr对象接收出错的信息。

sys.stdout与print

当我们在 Python 中打印对象调用 print obj 时候,事实上是调用了 sys.stdout.write(obj+'\n') ;print 将你需要的内容打印到了控制台,然后追加了一个换行符;print 会调用 sys.stdout 的 write 方法

以下两行在事实上等价:

  sys.stdout.write('hello'+'\n') 

  print 'hello'

sys.stdin与raw_input

当我们用 raw_input('Input promption: ') 时,事实上是先把提示信息输出,然后捕获输入

以下两组在事实上等价:

  hi=raw_input('hello? ') 

  print 'hello? ', #comma to stay in the same line
hi=sys.stdin.readline()[:-1] # -1 to discard the '\n' in input stream

从控制台重定向到文件:

原始的sys.stdout指向控制台。如果把文件的对象引用赋给sys.stdout,那么print调用的就是文件对象的write方法

 import sys

 f_handler = open('out.log','w')
sys.stdout = f_handler
print("hello")
# this hello can't be viewed on console
# this hello is in file out.log

如果想要在控制台打印一些东西的话,最好先将原始的控制台对象引用保存下来,向文件中打印后再恢复sys.stdout:

1 __console__=sys.stdout
2
3 # redirection start #
4
5 ...
6
7 # redirection end
8
9 sys.stdout=__console__

q

最新文章

  1. TortoiseSVN status cache占用CPU高
  2. latex中页面距离的设置
  3. <转>Hibernate的优、缺点(局限性)
  4. Node.js学习记录
  5. vi 编辑器常用命令
  6. Android概述(思维导图)
  7. 实现在Android简单封装类似JQuery异步请求
  8. C#学习日志 day 4 ------ 类相关---this指针以及相关关键字
  9. android入门:activity之间跳转,并且回传参数
  10. .24-浅析webpack源码之事件流compilation(2)
  11. ABP官方文档翻译 8.1 通知系统
  12. 高级Java面试总结2
  13. markdown改变字体颜色和大小
  14. 20155324 2016-2017-2 《Java程序设计》第2周学习总结
  15. Linux上的文件查找工具之locate与find
  16. 56.关于vue项目的seo问题
  17. PAT A1139 First Contact (30 分)——set
  18. Python运算符-4
  19. C# byte数组与Image的相互转换【转】
  20. 分析SignalTap的仿真结果

热门文章

  1. 从“中产梦”中醒来,好好打工吧
  2. matlab批量修改变量的名称
  3. UI库colorui的使用————小程序
  4. 2018-8-10-如何使用-Q#
  5. linux ---JDK的安装与配置--两种方式
  6. ltp-ddt realtime_cpuload_10p 涉及的cpuloadgen交叉编译及安装
  7. 真的,移动端尺寸自适应与dpr无关
  8. 向指定URL 发送POST请求的方法
  9. 基因id
  10. 英语单词Permissive