理解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
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值