python sys模块
1、概述
\quad \quad Python sys模块提供的功能使我们可以直接与解释器进行交互,可以在基础解释器上进行操作,无论它是Windows平台,Macintosh还是Linux。
2、函数
\quad \quad sys 模块提供了许多函数和变量来处理 Python 运行时环境的不同部分
2.1 sys.argv
说明:
\quad \quad
接受命令行的参数,是一个列表,列表的第一个元素即sys.argv[0]是所执行程序文件的名字,从第二个元素开始之后就是在命令行中输入的参数。
>>> import sys
>>> sys.argv
['']
功能:
\quad \quad
实现从程序外部向程序内传递参数。
例子:
1、首先建立一个包含sys.argv函数的python文件并命名为test.py
比如:
[root@master mr_wc]# vim test.py
包含以下内容
import sys
print(sys.argv[0])
print(sys.argv[1], sys.argv[2])# 想要传入两个参数
print(sys.argv) # 可有可无
说明,想要从程序外部传入n个参数,就改变
print(sys.argv[1], sys.argv[2],...,sys.argv[n])这一行
2、在命令行中输入:python test.py one 2
代码的测试结果如下:
其中,one,2就是从程序外部传入的参数
2.2 sys.path
说明:
\quad \quad 模块搜索路径,返回一个列表
功能:
\quad \quad
获取指定模块搜索路径的字符串集合,可以将写好的模块放在得到的某个路径下,就可以在程序中import时正确找到。
例子:
2.3 sys.stdin
stdin -- standard input file object; used by input()
说明:
\quad \quad
sys.stdin.readline()
可以实现标准输入,需要调用sys库,sys.stdin是一个标准化输入的方法,其中默认输入的格式是字符串,如果是int,float类型则需要强制转换为str类型,当连续输入多个间隔字符时,会将这些字符当作一个整体。
功能:
\quad \quad 当要求输入必须是字符串形式时,可以使用这种方法哦!
python中sys.stdin与input的区别:
\quad \quad input()方法和stdin()类似,不同的是
- sys.stdin.readline( )会将标准输入完全获取,包括末尾的’\n’,因此用len计算长度时是把换行符’\n’算进去了的,但是input( )获取输入时返回的结果是不包含末尾的换行符’\n’的。
import sys
try:
while True:
print('Please input a number:')
n = int(sys.stdin.readline().strip('\n')) #strip('\n')表示以\n分隔,否则输出是“字符串+\n”的形式
print('Please input some numbers:')
sn = sys.stdin.readline().strip()#若是多输入,strip()默认是以空格分隔,返回一个包含多个字符串的list。
if sn == '':
break
sn = list(map(int,sn.split())) #如果要强制转换成int等类型,可以调用map()函数。
print(n)
print(sn,'\n')
except:
pass
因此如果在平时使用sys.stdin.readline( )获取输入的话,不要忘了去掉末尾的换行符,可以用strip( )函数(sys.stdin.readline( ).strip(’\n’))或sys.stdin.readline( )[:-1]这两种方法去掉换行。
- input()括号内可以直接填写说明文字。
例子:
import sys
while True:
n = int(input('Please input a number:\n'))
sn = list(map(int,input('Please input some numbers:\n').split()))
print(n)
print(sn,'\n')
2.4 sys.stdout
在python中调用print时,事实上调用了sys.stdout.write(obj+’\n’)
print 将需要的内容打印到控制台,然后追加一个换行符
以下两行代码等价:
sys.stdout.write('hello' + '\n')
print('hello')
2.5 sys.stderr
stderr -- standard error object; used for error messages
说明:
\quad \quad
标准错误流信息。
例子:
2.6 sys.exit([arg])
说明:
\quad \quad
sys.exit([arg]) ,程序中间的退出,arg=0为正常退出,其他都为异常退出
import sys
print("JournalDev")
sys.exit(1)
print("Hello")
2.7 sys.module
\quad \quad python中的sys.modules是一个全局字典,从python程序启动就加载到了内存,用于保存当前已导入(加载)的所有模块名和模块对象。
\quad \quad 在python的模块查找中,sys.modules起到缓存作用,避免了模块的重复加载。程序在导入某个模块时,会首先查找sys.modules中是否包含此模块名,若存在,则只需将模块的名字加入到当前模块的Local名字空间中;若不存在,则需要从sys.path目录中按照模块名称查找模块文件,模块文件可以是py、pyc、pyd,找到后将模块加载到内存,并加入到sys.modules字典,最后将模块的名字加入当前模块的Local名字空间中。
2.8 其他
getdefaultencoding()
返回当前默认字符串编码的名称。
getrefcount(obj)
返回对象的引用计数。
getrecursionlimit()
返回支持的递归深度。
getsizeof(object[, default])
以字节为单位返回对象的大小。
setswitchinterval(interval)
设置线程切换的时间间隔。
getswitchinterval()
返回线程切换时间间隔。
import sys
print(sys.getdefaultencoding())
print(sys.getrefcount('123456'))
print(sys.getrecursionlimit())
print(sys.getsizeof('abcde'))
sys.setswitchinterval(1)
print(sys.getswitchinterval())
参考资料:
- https://blog.csdn.net/ityard/article/details/104104571