python常用模块-sys
Python常用模块-sys
https://www.cnblogs.com/pycode/p/sysos.html
https://www.cnblogs.com/BigFishFly/p/6622784.html
sys.argv 命令行参数List,第一个元素是程序本身路径
sys.exit(n) 退出程序,正常退出时exit(0)
sys.version 获取Python解释程序的版本信息
sys.maxint 最大的Int值
sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
sys.platform 返回操作系统平台名称
sys.stdout.write('please:')
val = sys.stdin.readline()[:-1]
sys.argv
[admin@pe-jira wangxu]$ cat s.py import sys print(sys.argv[0]) print(sys.argv[1]) print(sys.argv[1:]) print(sys.argv[2:]) [admin@pe-jira wangxu]$ python s.py 1 2 3 4 5 s.py 1 ['1', '2', '3', '4', '5'] ['2', '3', '4', '5'] [admin@pe-jira wangxu]$
sys.exit(n)
>>> import sys >>> sys.exit() [admin@pe-jira wangxu]
sys.version
>>> import sys >>> >>> sys.version '3.6.0 (default, May 28 2018, 13:50:58) \n[GCC 4.4.7 20120313 (Red Hat 4.4.7-18)]' >>>
sys.stdin.read
[admin@pe-jira wangxu]$ cat read.py #!/usr/bin/env python #encoding=utf-8 import sys for line in sys.stdin.read(): print(line.strip()) [admin@pe-jira wangxu]$ cat source.txt 111 222 333 [admin@pe-jira wangxu]$ python read.py < source.txt 1 1 1 2 2 2 3 3 3 [admin@pe-jira wangxu]$ sys.stdin.readline [admin@pe-jira wangxu]$ cat read.py #!/usr/bin/env python #encoding=utf-8 import sys for line in sys.stdin.readline(): print(line.strip()) [admin@pe-jira wangxu]$ cat source.txt 111 222 333 [admin@pe-jira wangxu]$ python read.py < source.txt 1 1 1 2 2 2 [admin@pe-jira wangxu]$
sys.stdin.readlines
[admin@pe-jira wangxu]$ cat read.py #!/usr/bin/env python #encoding=utf-8 import sys for line in sys.stdin.readlines()[:-1]: print(line.strip()) [admin@pe-jira wangxu]$ cat source.txt 111 222 333 [admin@pe-jira wangxu]$ python read.py < source.txt 111 222 [admin@pe-jira wangxu]$ [admin@pe-jira wangxu]$ cat read.py #!/usr/bin/env python #encoding=utf-8 import sys for line in sys.stdin.readlines(): print(line.strip()) [admin@pe-jira wangxu]$ cat source.txt 111 222 333 [admin@pe-jira wangxu]$ python read.py < source.txt 111 222 333 [admin@pe-jira wangxu]$ sys.stdin.readline只能输入一行 >>> m = sys.stdin.read() sssssss ssssss sss ddd >>> print(m) sssssss ssssss sss ddd >>> m = sys.stdin.readline() 222 >>> print(m) 222 >>> m = sys.stdin.readlines() 2222 333 444 >>> print(m) ['2222\n', '333\n', '444\n'] >>>
sys.stdout.write
http://www.cnblogs.com/valleyofwind/p/8628925.html
https://www.cnblogs.com/pycode/p/sysos.html
①sys.stdout.write是将str写到流,原封不动,不会像print那样默认end='\n'
②sys.stdout.write只能输出一个str,而print能输出多个str,且默认sep=' '(一个空格)
③print,默认flush=False.
④print还可以直接把值写到file中
>>> sys.stdout.write('aaa') aaa3 >>> sys.stdout.write('aaa\n') aaa 4 >>> sys.stdout.write('aaa\r') 4aa >>> sys.stdout.write('aaa\n') aaa 4 >>> print('aaa','sss') aaa sss >>> sys.stdout.write('aaa','22222') Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: write() takes exactly one argument (2 given) >>> 进度条 #!/usr/bin/env python # -*- coding: UTF-8 -*- #pyversion:python3.5 #owner:fuzj """ sys 和python解析器相关 """ import sys import time def view_bar(num,total): rate = num / total rate_num = int(rate * 100) #r = '\r %d%%' %(rate_num) r = '\r%s>%d%%' % ('=' * rate_num, rate_num,) sys.stdout.write(r) sys.stdout.flush if __name__ == '__main__': for i in range(0, 101): time.sleep(0.1) view_bar(i, 100) 效果: ====================================================================================================>100%
sys.stdout.flush
flush是刷新的意思,在print和sys.stdout.write输出时是有一个缓冲区的。
比如要向文件里输出字符串,是先写进内存(因为print默认flush=False,也没有手动执行flush的话),在close文件之前直接打开文件是没有东西的,如果执行一个flush就有了。
>>> import time >>> import sys >>> ... for i in range(5): ... print(i) ... sys.stdout.flush() ... time.sleep(1) ... 0 1 2 3 4 >>>