python3.6sysos_python sys模块使用详情

sys模块提供了一系列有关Python运行环境的变量和函数。

1、sys.argv

可以用sys.argv获取当前正在执行的命令行参数的参数列表(list)。

变量解释

sys.argv[0]当前程序名

sys.argv[1]第一个参数

sys.argv[2]第二个参数

len(sys.argv)-1 参数个数(减去文件名)

1)

import sys

print(sys.argv)

print(sys.argv[0])

print(sys.argv[1])

print("第二个参数:%s"%sys.argv[2])

print("参数个数:%s"%(len(sys.argv)-1))-------------------结果:

#python/root/mcw.py arg1 arg2

['/root/mcw.py', 'arg1', 'arg2']/root/mcw.py #当前程序名

arg1

第二个参数:arg2

参数个数:2

2) 如果执行用的相对路径,返回的是相对路径

print(sys.argv[0])----------------结果:

[root@xiaoma/root] test!#python ./mcw.py

./mcw.py

#sys.argv =['/root/mcw.py', 'arg1', 'arg2'] ,列表第一个元素为程序执行相对路径,第二个元素开始为程序传参

2、sys.path

返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值

import sys

print(sys.path)---------------------结果:

['D:\\aPython_full目录\\小马过河的代码练习', 'C:\\mcw', 'C:\\mcw\\venv\\Scripts\\python36.zip', 'C:\\python3\\DLLs', 'C:\\python3\\lib', 'C:\\python3', 'C:\\mcw\\venv', 'C:\\mcw\\venv\\lib\\site-packages', 'C:\\mcw\\venv\\lib\\site-packages\\setuptools-39.1.0-py3.6.egg', 'C:\\mcw\\venv\\lib\\site-packages\\pip-10.0.1-py3.6.egg', 'C:\\软件安装\\PyCharm 2018.3.5\\helpers\\pycharm_matplotlib_backend']

添加系统环境变量:

import sys,os

BASE_DIR=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

print(BASE_DIR)

#添加系统环境变量

sys.path.append(BASE_DIR)

print(sys.path)

-------

import sys

sys.path.append("C:\python3\Scripts")

print(sys.path)

------------------结果:

['D:\\.........., 'C:\\python3\\Scripts']

3、sys.platform

获取当前执行环境的平台,如win32表示是Windows系统,linux2表示是linux平台

print(sys.platform)-------------结果:

win32-------------结果:

[root@xiaoma/root] test!#python mcw.py

linux2

4、sys.exit(n)

调用sys.exit(n)可以中途退出程序,当参数非0时,会引发一个SystemExit异常,从而可以在主程序中捕获该异常。

#vim mcw.py

import sys

sys.exit(3)----------结果:

[root@xiaoma/root] test!#python mcw.py

[root@xiaoma/root] test!#echo $?

3

5、sys.version

获取Python解释程序的版本信息

import sys

print(sys.version)--------------结果:3.6.8 (tags/v3.6.8:3c6b436a57, Dec 23 2018, 23:31:17) [MSC v.1916 32bit (Intel)]

import sys

print(sys.version)--------------结果:

[root@xiaoma/root] test!#python mcw.py2.7.5 (default, Nov 6 2016, 00:28:07)

[GCC4.8.5 20150623 (Red Hat 4.8.5-11)]

6、sys.getrefcount

获取一个值的应用计数

a = [11,22,33]

b = a

print(sys.getrefcount(a))

--------------结果:

3 #a,b,还有gerefcount方法三个都在使用这个列表

7、sys.getrecursionlimit python默认支持的递归数量

8、sys.stdout.write     可以做输出重定向

for i in range(3):

print("魔降风云变")

import sysfor i in range(3):

sys.stdout.write('小马过河')-----------------结果:

魔降风云变

魔降风云变

魔降风云变

小马过河小马过河小马过河

import sysfor i in range(3):

sys.stderr.write('小马过河')------------------结果:

小马过河小马过河小马过河

stdout 是一个类文件对象;调用它的 write 函数可以打印出你给定的任何字符串。

实际上,这就是 print 函数真正做的事情;它在你打印的字符串后面加上一个硬回车,然后调用 sys.stdout.write 函数。

在最简单的例子中,stdout 和 stderr 把它们的输出发送到相同的地方

和 stdout 一样,stderr 并不为你添加硬回车;如果需要,要自己加上。

stdout 和 stderr 都是类文件对象,但是它们都是只写的。

它们都没有 read 方法,只有 write 方法。然而,它们仍然是类文件对象,因此你可以将其它任何 (类) 文件对象赋值给它们来重定向其输出。

9、sys.modules

import sys,os

print(sys.modules.keys())-----------------------结果;

dict_keys(['builtins', 'sys', '_frozen_importlib', '_imp', '_warnings', '_thread', '_weakref', '_frozen_importlib_external', '_io', 'marshal', 'nt', 'winreg', 'zipimport', 'encodings', 'codecs', '_codecs', 'encodings.aliases', 'encodings.utf_8', '_signal', '__main__', 'encodings.latin_1', 'io', 'abc', '_weakrefset', 'site', 'os', 'errno', 'stat', '_stat', 'ntpath', 'genericpath', 'os.path', '_collections_abc', '_sitebuiltins', '_bootlocale', '_locale', 'encodings.gbk', '_codecs_cn', '_multibytecodec', 'sysconfig', 'encodings.cp437', 'sitecustomize'])

参考链接:

1)https://cloud.tencent.com/developer/article/1175267

2)https://blog.csdn.net/u013176681/article/details/53607565

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值