python sys模块常用方法总结

上一篇总结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(), ,其默认输入的格式都是字符串,其区别只在于两点:

  1. input()括号内可以直接填写提示文字, 如input(‘Please input a number:’ ), 而sys.stdin.readline()不可以;
  2. 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]

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

猜你喜欢

转载自blog.csdn.net/weixin_43705953/article/details/109201014