当前位置: 首页 > news >正文

python中sys模块下载_python模块:sys模块

sys模块

1. 简介

sys模块是Python语言的一个系统内置模块,安装Python后自动包含sys库,不需要单独安装。只需import sys即可。

我们可以通过 dir(sys) 命令查看模块中可用的方法,示例如下:

>>> import sys

>>> dir(sys)

['__displayhook__', '__doc__', '__excepthook__', '__interactivehook__', '__loader__', '__name__', '__package__', '__spec__', '__stderr__', '__stdin__', '__stdout__', '_clear_type_cache', '_current_frames', '_debugmallocstats', '_enablelegacywindowsfsencoding', '_getframe', '_git', '_home', '_xoptions', 'api_version', '

argv', 'base_exec_prefix', 'base_prefix', 'builtin_module_names', 'byteorder', 'call_tracing', 'callstats', 'copyright', 'displayhook', 'dllhandle', 'dont_write_bytecode', 'exc_info', 'excepthook', 'exec_prefix', 'executable', 'exit', 'flags', 'float_info', 'float_repr_style', 'get_asyncgen_hooks', 'get_coroutine_wrapp

er', 'getallocatedblocks', 'getcheckinterval', 'getdefaultencoding', 'getfilesystemencodeerrors', 'getfilesystemencoding', 'getprofile', 'getrecursionlimit', 'getrefcount', 'getsizeof', 'getswitchinterval', 'gettrace', 'getwindowsversion', 'hash_info', 'hexversion', 'implementation', 'int_info', 'intern', 'is_finalizin

g', 'maxsize', 'maxunicode', 'meta_path', 'modules', 'path', 'path_hooks', 'path_importer_cache', 'platform', 'prefix', 'ps1', 'ps2', 'set_asyncgen_hooks', 'set_coroutine_wrapper', 'setcheckinterval', 'setprofile', 'setrecursionlimit', 'setswitchinterval', 'settrace', 'stderr', 'stdin', 'stdout', 'thread_info', 'versio

n', 'version_info', 'warnoptions', 'winver']

2. 常用方法:

1. sys.argv

实现从程序外部向程序传递参数。

sys.argv 变量是一个包含了命令行参数的字符串列表,利用命令行向程序传递参数。其中,脚本的名称总是 sys.argv 列表的第一个参数。

import sys

print(sys.argv[0]) #sys.argv[0]表示代码本身的文件路径

print("命令行参数如下:")

for i in sys.argv:

print(i)

命令行输入参数如下:

D:\st13\python\1.20\python lx.py Welcome to Xian

运行结果:

lx.py #sys.argv[0]

命令行参数如下:

lx.py

Welcome

to

Xian

2. sys.path

获取指定模块搜索路径的目录名列表,列表中的第一项为当前的工作目录。

即,import模块的目录名位置列表,列表中的第一项为当前位置。

>>>import sys

>>> print(sys.path)

['', 'C:\\Users\\dell\\AppData\\Local\\Programs\\Python\\Python37\\python37.zip', 'C:\\Users\\dell\\AppData\\Local\\Programs\\Python\\Python37\\DLLs', 'C:\\Users\\dell\\AppData\\Local\\Programs\\Python\\Python37\\lib', 'C:\\Users\\dell\\AppData\\Local\\Programs\\Python\\Python37', 'C:\\Users\\dell\\AppData\\Local\\Programs\\Python\\Python37\\lib\\site-packages']

3. sys.exit([arg])

程序中间的退出,arg=0为正常退出。在一般情况下,执行到主程序末尾,解释器自动退出,但是如果需要中途退出程序,可以调用sys.exit函数(0是正常退出,其他为异常)。

在如下例子中,首先打印hello,在执行sys.exit(1)时,将1作为参数传递到函数中,然后将1打印出来,程序正常退出,不会执行后面的语句,也就不会打印出world。

4. sys.version

获取Python版本信息。

>>> import sys

>>> sys.version

'3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 22:22:05) [MSC v.1916 64 bit (AMD64)]'

5. sys.platform

获取当前系统平台,返回操作系统的名称。

>>> import sys

>>> sys.platform

'win32'

6. sys.getsizeof

获取所查询内容的空间大小。

有下面例子可以推出:对于同一元素,内存空间大小排序为:数字 = 元组 < 字符串 < 列表 < 集合。

>>> import sys

>>> number1=5

>>> str1='5'

>>> tup1=(5)

>>> list1=[5]

>>> set1={5}

>>> sys.getsizeof(number1)

28

>>> sys.getsizeof(str1)

50

>>> sys.getsizeof(tup1)

28

>>> sys.getsizeof(list1)

72

>>> sys.getsizeof(set1)

224

7. sys.modules

返回系统导入的模块字段。

sys.modules 是一个全局字典,该字典是 Python 启动后就加载在内存中。每当程序员导入新的模块,sys.modules 将自动记录该模块。当第二次再导入该模块时,Python 会直接到字典中查找,从而加快了程序运行的速度。它拥有字典所拥有的一切方法。

>>> import sys

>>> sys.modules['os']

8. sys.modules.keys()

返回所有已经导入的模块。

>>> import sys

>>> sys.modules.keys()

dict_keys(['sys', 'builtins', '_frozen_importlib', '_imp', '_thread', '_warnings', '_weakref', 'zipimport', '_frozen_importlib_external', '_io', 'marshal', 'nt', 'winreg', 'encodings', 'codecs', '_codecs', 'encodings.aliases', 'encodings.utf_8', '_signal', '__main__', 'encodings.latin_1', 'io', 'abc', '_abc', 'site', 'os', 'stat', '_stat', 'ntpath', 'genericpath', 'os.path', '_collections_abc', '_sitebuiltins', 'atexit'])

9. sys.modules.values()

返回所有的模块,包括模块的路径。

>>> import sys

>>> sys.modules.values()

dict_values([, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ])

10. sys.stdout / sys.stdin / sys.stderr

sys.stdout 标准输出;sys.stdin 标准输入;sys.stderr 错误输出

>>> import sys

>>> sys.stdout

>>> sys.stdin

>>> sys.stderr

11. sys.getdefaultencoding() / sys.getfilesmencoding()

sys.getdefaultencoding():获取解释器默认编码;

sys.getfilesystemencoding():获取内存数据存到文件里的默认编码。

>>> import sys

>>> sys.getdefaultencoding()

'utf-8'

>>> sys.getfilesystemencoding()

'utf-8'

3. 应用

1. 对指定的模块进行判断,判断是否为内建模块。

import sys

print("Name is:",sys.argv[0])

def dump(module):

print(module+'---->',end='')

if module in sys.builtin_module_names:

print("内建模块")

else:

module=__import__(module)

print(module.__file__)

dump("sys")

dump("json")

dump("shelve")

dump("os")

dump("string")

dump("requests")

结果如下:

Name is: D:\st13\test\1.py

sys---->内建模块

json---->C:\Python36\lib\json\__init__.py

shelve---->C:\Python36\lib\shelve.py

os---->C:\Python36\lib\os.py

string---->C:\Python36\lib\string.py

requests---->C:\Python36\lib\site-packages\requests\__init__.py

2. 应用sys模块中的argv实现从程序外部向程序内传递参数。

import os

#import sys 这种方法导入sys模块,需使用sys.argv

from sys import argv #这种方法导入sys模块,可直接使用argv

def ping(net,start=1,end=85,n=1,w=3):

for i in range(start,end+1):

ip=net+"."+str(i)

command="ping %s -n %d -w %d"%(ip,n,w)

print(ip,("通","不通")[os.system(command)]) #os.system(command):运行command命令

if len(argv) not in [2,4,6]:

print("参数输入错误!")

print("运行示例:")

print("note1.py 121.194.14")

print("note1.py 121.194.14 80 90")

print("note1.py 121.194.14 80 90 3 1")

print("语法:note1.py net startip endip count timeout")

elif len(argv)==2:

net=argv[1]

ping(net)

elif len(argv)==4:

net=argv[1]

ping(net,start=int(argv[2]),end=int(argv[3]))

else:

net=argv[1]

ping(net,start=int(argv[2]),end=int(argv[3]),n=int(argv[4]))

相关文章:

  • mysql mybatis批量删除_Mybatis批量删除和更新,中文注释插件
  • mysql启动错误1455_PL/SQL“ ORA-14551: 无法在查询中执行 DML 操作”解决
  • ubuntu安装mysql集群_Ubuntu 20.10单机安装MySQL 8.0.22 NDB集群
  • java序列化工具类_java对象序列化及反序列化SerializeUtils工具类
  • java dispatchevent_这段程序的单击事件不能执行,点击后出现如下错误:at java.awt.Component.dispatchEventImpl(Unknown Sou...
  • java kerberos配置_为kerberos配置Storm
  • java nodelist 快速排序_数据结构的实践心得(归并排序和快速排序:mergeSort、quickSort)...
  • java xml setdoctype_集合Set映射一对多(使用xml文件)
  • java dofinalize_Java finalize方法使用
  • java调用ecdh_Jecc(java椭圆曲线加密库)学习笔记及ECDH实现
  • java雷达_Java编写有关雷达问题,哪位高手帮个忙,谢谢~~~
  • 继承java_Java— 继承
  • java guid_细说Java生成GUID的实现方法
  • java多租户_(九十二)java版spring cloud 多租户社交电子商务-gateway(实现限流)...
  • foxpro mysql_Foxpro数据库命令汇总
  • android百种动画侧滑库、步骤视图、TextView效果、社交、搜房、K线图等源码
  • Brief introduction of how to 'Call, Apply and Bind'
  • extjs4学习之配置
  • happypack两次报错的问题
  • Java应用性能调优
  • JSONP原理
  • JS学习笔记——闭包
  • js中的正则表达式入门
  • node-sass 安装卡在 node scripts/install.js 解决办法
  • React-flux杂记
  • spring-boot List转Page
  • SSH 免密登录
  • Vue 2.3、2.4 知识点小结
  • vue和cordova项目整合打包,并实现vue调用android的相机的demo
  • Vue学习第二天
  • yii2中session跨域名的问题
  • 初探 Vue 生命周期和钩子函数
  • 配置 PM2 实现代码自动发布
  • 使用API自动生成工具优化前端工作流
  • 算法系列——算法入门之递归分而治之思想的实现
  • 用jQuery怎么做到前后端分离
  • 做一名精致的JavaScripter 01:JavaScript简介
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • ​2020 年大前端技术趋势解读
  • #define 用法
  • $$$$GB2312-80区位编码表$$$$
  • (6)STL算法之转换
  • (第61天)多租户架构(CDB/PDB)
  • (二)PySpark3:SparkSQL编程
  • (考研湖科大教书匠计算机网络)第一章概述-第五节1:计算机网络体系结构之分层思想和举例
  • (四)JPA - JQPL 实现增删改查
  • (四)linux文件内容查看
  • (一) storm的集群安装与配置
  • (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】...
  • (转)真正的中国天气api接口xml,json(求加精) ...
  • (状压dp)uva 10817 Headmaster's Headache
  • .NET Core日志内容详解,详解不同日志级别的区别和有关日志记录的实用工具和第三方库详解与示例
  • .Net Remoting(分离服务程序实现) - Part.3
  • :中兴通讯为何成功
  • @NoArgsConstructor和@AllArgsConstructor,@Builder