ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python sys模块

2021-11-22 09:02:30  阅读:160  来源: 互联网

标签:python argv sys print 模块 mcw import root


转载于https://www.cnblogs.com/machangwei-8/p/10718187.html

 

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 32 bit (Intel)]

import sys
print(sys.version)
--------------结果:
[root@xiaoma /root] test!
#python mcw.py 
2.7.5 (default, Nov  6 2016, 00:28:07) 
[GCC 4.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 sys
for i in range(3):
    sys.stdout.write('小马过河')
-----------------结果:
魔降风云变
魔降风云变
魔降风云变
小马过河小马过河小马过河

import sys
for 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', 'encodi

标签:python,argv,sys,print,模块,mcw,import,root
来源: https://www.cnblogs.com/sfsec/p/15586927.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有