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 标准错误,标准输入输出,错误,都有文件属性