sys模块的学习总结

sys.argv #获取执行脚本时传入的参数 且传入的参数type为列表

文件:

#coding:utf-8

import sys

print sys.argv

其中 sys.argv[0] 为程序的路径,sys.argv[1]-----程序外部向程序传递参数

保存为 test.py  切换到test.py所在的目录 python test.py  goods  会把good 当成参数传入程序

sys.path       #获取指定模块搜索路径的字符串集合,可以将写好的模块放在得到的某个路径下,就可以在程序中import时正确找到

sys.version #打印python版本

sys.platform # 查看系统版本

sys.getdefaultencoding() # 获取系统当前编码

sys.getfilesystemencoding() # 获取文件系统使用编码方式,Windows下返回'mbcs',mac下返回'utf-8'

sys.stdin # 标准输入,sys.stdin.readline( )会将标准输入全部获取,包括末尾的'\n',因此用len计算长度时是把换行符'\n'算进去了的,但是input( )获取输入时返回的结果是不包含末尾的换行符'\n'的。

标准IO流,如果需要更好地控制输出,而print 不能满足你的要求, 它们就是你所需要的. 你也可以替换它们, 这时候你就可以重定向输出和输入到其它设备( device ), 或者以非标准的方式处理它们
sys.stdout  #标准输出,,原始的sys.stdout指向控制台,如果把文件的对象引用赋给sys.stdout,那么print调用的就是文件对象的write方法应用示例:例1

例子1:把string 模块文件保存到 mytemp.txt中

fileHandler=open('mytemp.txt','w')
sys.stdout=fileHandler
help(string)
fileHandler.close()

在python中调用print时,事实上调用了sys.stdout.write(obj+'\n')   应用示例2:制作进度条

import sys, time

for i in range(51):
    sys.stdout.write("\r")
    m=float(float(i)/51)*100
    n=i*"|"
    sys.stdout.write("%d%% | %s" % (m, n))
    sys.stdout.flush()
    time.sleep(0.05)

在python中从控制台已经重定向到文件,在如何切换回控制台

import sys
__console=sys.stdout #在重定向到文件以前,先保存一下控制台handler
f=open('tmp.txt','w')
sys.stdout=f
print 'hahhahdfsdfdsf\n'
print 'hsdfsfdfdfds\n'
f.close()
sys.stdout=__console__ #切换为控制台handler
print 'hello world'

sys.stderr  标准错误,标准输入输出,错误,都有文件属性

 

posted @ 2017-09-15 10:32  自动化前行者  阅读(205)  评论(0编辑  收藏  举报