超详细的sys 【1】
本帖最后由 MSK 于 2017-7-14 13:46 编辑sys.path
功能:获取指定模块搜索路径的字符串集合,可以将写好的模块放在得到的某个路径下,就可以在程序中import时正确找到
这是我的sys.path:
>>> sys.path
['', 'F:\\python\\python36\\Lib\\idlelib', 'F:\\python\\python36\\python36.zip', 'F:\\python\\python36\\DLLs', 'F:\\python\\python36\\lib', 'F:\\python\\python36', 'F:\\python\\python36\\lib\\site-packages', 'F:\\python\\python36\\lib\\site-packages\\setuptools-33.1.1-py3.6.egg', 'F:\\python\\python36\\lib\\site-packages\\pip-9.0.1-py3.6.egg']
sys.stdout 和 sys.stderr
功能:处理标准输出/输入
代码源于网络
>>> for i in range(3):
... print'Dive in'
Dive in
Dive in
Dive in
>>> import sys
>>> for i in range(3):
... sys.stdout.write('Dive in')
Dive inDive inDive in
>>> for i in range(3):
... sys.stderr.write('Dive in')
Dive inDive inDive in
标准输入(stdout)和标准错误(stderr)是内建在每一个 UNIX 系统中的管道
当print 某些东西时,结果前往 stdout 管道;
当程序崩溃并打印出调试信息 (例如 Python 中的 traceback (错误跟踪)) 的时候,信息前往 stderr 管道
stdout 和 stderr 都是类文件对象,调用它的 write 函数可以打印出你给定的任何字符串.
注意!它们都是只写的!
**** Hidden Message *****
使用sys重定向输出
代码 源于网络,稍加过修改~
print 'Dive in' # 标准输出
saveout = sys.stdout # 备份一个stdout,这样的话之后你还可以将其设回正常
fsock = open('out.log', 'w') # 打开一个新文件用于写入。如果文件不存在,将会被创建。如果文件存在,将被覆盖。
sys.stdout = fsock # 所有后续的输出都会被重定向到刚才打开的新文件上。
print('这句话被我写进out.log') # 这样只会将输出结果“打印”到日志文件中;屏幕上不会看到输出
sys.stdout = saveout # 在我们将 stdout 搞乱之前,让我们把它设回原来的方式。
fsock.close() # 关闭日志文件。
打开当前目录下的out.log,你可以看到这句话被写进了文件
**** Hidden Message *****
重定向错误信息
fsock = open('error.log', 'w') # 打开你要存储调试信息的日志文件。
sys.stderr = fsock # 将新打开的日志文件的文件对象赋值给stderr以重定向标准错误。
raise Exception, 'this error will be logged' # 引发一个异常,没有在屏幕上打印出任何东西,所有正常的跟踪信息已经写进error.log
还要注意你既没有显示关闭日志文件,也没有将 stderr 设回最初的值。
所有正常的跟踪信息已经写进error.log
所有正常的跟踪信息已经写进error.log
所有正常的跟踪信息已经写进error.log
这样挺好,因为一旦程序崩溃 (由于引发的异常),Python 将替我们清理并关闭文件
回复有彩蛋~彩蛋~彩蛋~{:10_297:}
**** Hidden Message *****
有什么不对的地方还请指正~{:10_297:}@~风介~ @不二如是 @小甲鱼 hehe 虽然木有用过,但是这个粉粉的感觉,一看就喜欢~ 不二如是 发表于 2017-7-14 17:48
虽然木有用过,但是这个粉粉的感觉,一看就喜欢~
哈哈,你的html5好多代码写出的都是粉色~ 感谢楼主 顶一个看看 谢谢分享{:10_266:} 谢谢分享 666 谢谢 1 看看
页:
[1]