上一篇总结os模块,该模块与 sys 模块从名称上看着好像有点类似,实际上关系不大,os 模块主要负责与操作系统进行交互,而这个两个模块常常搭配起来使用, 能实现许多需求。sys 模块主要负责与 Python 解释器进行交互,提供了一系列用于控制 Python 运行环境的函数和变量。本文为常用的sys模块用法总结。
1 返回操作系统平台名称
sys.platform
'win32'
2 获取Python解释器的版本信息
sys.version
'3.7.6 (default, Jan 8 2020, 20:23:39) [MSC v.1916 64 bit (AMD64)]'
3 返回当前默认的字符编码格式
sys.getdefaultencoding()
'utf-8'
4 sys.argv 当运行该脚本时,用来向解释器传递参数。是一个列表,第一个参数默认是脚本本身路径, 运行py文件后面跟着的内容被作为后续的参数传递给程序。看懂下面这个栗子即可;
创建sys.py如下
import sys
sys.hexversion
if len(sys.argv) == 1:
print (sys.argv[0])
elif sys.argv[1]=='version' :
print(sys.version)
elif sys.argv[1]=='platform':
print(sys.platform)
else : print('Vague instructions')
在cmd中调用sys.py
C:\Users\yuanwanli> python C:\Users\sys.py
C:\Users\sys.py
C:\Users\yuanwanli>python C:\Users\sys.py platform
win32
C:\Users\yuanwanli>python C:\Users\sys.py version
3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 22:22:05) [MSC v.1916 64 bit (AMD64)]
C:\Users\yuanwanli>python C:\Users\sys.py x
Vague instructions
5 sys.stdin #(standard input)
sys.stdin.readline()的功能相当于input(), ,其默认输入的格式都是字符串,其区别只在于两点:
- input()括号内可以直接填写提示文字, 如input(‘Please input a number:’ ), 而sys.stdin.readline()不可以;
- sys.stdin.readline()会获取每行数据的最后的换行符’\n’, 而input()忽略;
a = input('please input int:')
b = sys.stdin.readline()
print(list(a), list(b))
# 都输入 1
['1'] ['1', '\n']
sys.stdin.readline().strip(’\n’) 可以删除换行符’\n’ , 达到和input()同样的效果
a = input('please input int:')
b = sys.stdin.readline().strip('\n')
print(list(a), list(b))
# 都输入 1
['1'] ['1']
sys.stdin.readline() 输入是字符串格式,需要int, float 可以使用map函数转换
a = sys.stdin.readline().strip('\n')
a = list(map(int, a.split()))
print(a)
# 输入1 2
[1, 2]
例如,牛客网的标准的单行输入
//1 2
a = sys.stdin.readline().strip("\n").split(" ")
a = list(map(int,a))
print(a)
[1, 2]
多行输入:
//3
//1 2
//3 4 5
//6 7 8
n = sys.stdin.readline().strip("\n")
n = int(n)
array_list = []
for i in range(n):
str_list = sys.stdin.readline().strip("\n").split();
array_list.append(list(map(int, str_list)));
print(array_list)
[[1, 2], [3, 4, 5], [6, 7, 8]]
6 sys.stdout #(standard output)
当我们在 Python 中打印对象调用 print(x)时候,事实上是调用了 sys.stdout.write(x+’\n’)
print 将你需要的内容打印到了控制台,然后追加了一个换行符, 如下:
sys.stdout.write('hello\n')
print('hello')
hello
hello
这是sys模块的基础用法,更全面的方法请参考sys官方文档https://docs.python.org/zh-cn/3/library/sys.html?highlight=sys#module-sys