1. sys模块的常见函数列表
- sys.argv
获取命令行参数,返回值是List,第一个元素是程序本身
[bsjk@bridge script]$ cat test.py
import sys
print(sys.argv)
[bsjk@bridge script]$ python test.py a b c
['test.py', 'a', 'b', 'c']
-
sys.exit(n)
程序退出,如果是正常退出是sys.exit(0),这里的参数可以自己填,但是对于程序是怎样退出的应该传参是几,应该自己定义好,这样别人在运行你的程序的时候才知道你是怎样退出的,是正常退出还是意外退出。
例子,待完成… -
sys.path
功能:返回模块的搜索路径,初始化时使用Python path环境变量的值,可以将写好的模块放在得到的某个路径下,就可以在程序中import时正确找到。
sys.path.append(“自定义模块路径”) -
sys.stdout, sys.stdin,sys.stderror
sys.stdout.write和print 都是输出相关的函数print内部也是调用的sys.stdout,sys.stdout默认输出是屏幕。
import sys
s = 'test stdout'
print('--')
sys.stdout.write(s) #sys.stdout.write默认不换行
print('--')
class A(object):
pass
print(A)
sys.stdout.write(A) #sys.stdout.write只可以输出字符串类型,否则报错
结果是:
================ RESTART: C:\Users\Yoke\Desktop\test\test.py ================
--
test stdout--
<class '__main__.A'>
Traceback (most recent call last):
File "C:\Users\Yoke\Desktop\test\test.py", line 9, in <module>
sys.stdout.write(A)
TypeError: must be str, not type
2. sys.stdout\in\error
当你 print 某些东西时,结果前往 stdout 管道。
stdout 是一个类文件对象;调用它的 write 函数可以打印出你给定的任何字符串。
实际上,这就是 print 函数真正做的事情;它在你打印的字符串后面加上一个硬回车,然后调用 sys.stdout.write 函数。
stdout 是类文件对象,但是它是只写的,它没有 read 方法,只有 write 方法。然而,它仍然是类文件对象,因此你可以将其它任何 (类) 文件对象赋值给它们来重定向其输出。
- 使用sys重定向输出
import sys
print ("game start") # 标准输出
saveout = sys.stdout # 在重定向前保存stdout,这样的话之后你还可以将其设回正常
f = open('out.log', 'w') # 定义文件对象f
sys.stdout = f
'''
所有后续的输出都会被重定向到刚才打开的新文件上。
为啥这么说呢,因为print相当于sys.stdout.write加了一个硬回车,
所以重定义sys.stdout后,print相当于f.write加个回车。
'''
# 这样只会将输出结果“打印”到日志文件中,屏幕上不会看到输出
print('This message will be logged instead of displayed')
print("I am back")
sys.stdout = saveout # 将stdout设回原来的方式
f.close() # 关闭文件对象
print('game over!') # 标准输出