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]))

python中sys模块下载_python模块:sys模块相关推荐

  1. 模块是python中普通的文件吗_python 包和模块

    当执行代码时,从这行开始执行:当外部调用代码为模块时,此部分不会被执行. if __name__ == '__main__': pass 模块是对代码的整理,包是对模块的整理. 模块 Python 模 ...

  2. python中如何定义颜色_Python图像处理之颜色的定义与使用分析

    本文实例讲述了Python图像处理之颜色的定义与使用.分享给大家供大家参考,具体如下: python中的颜色相关的定义在matplotlib模块中,为方便使用,这里给大家展示一下在这个模块中都定义了哪 ...

  3. python gevent模块 下载_Python中的多任务,并行,并发,多线程,多进程,协程区别...

    多任务 CPU承担了所有的计算任务.一个CPU在一个时间切片里只能运行一个程序.当我们想同时运行多于一个程序的时候,就是多任务,例如同时运行微信,QQ,浏览器等等.多任务的目的是提升程序的执行效率,更 ...

  4. python中bs4模块下载_Python及bs4、lxml、numpy模块包的安装

    http://blog.csdn.net/tiantiancsdn/article/details/51046490(转载) Python及bs4.lxml.numpy模块包的安装 Python 的安 ...

  5. sys python3 常用_python之sys模块【获取参数】

    python之sys模块[获取参数] 发布时间:2019-06-13 16:19, 浏览次数:303 , 标签: python sys <>sys模块:system指的是解释器(os指的是 ...

  6. python中pass的用法_python学习之getpass模块使用

    我们登入linux时,输入密码是什么都不显示的,在python中也可以这样做,那就是getpass模块(在pycharm中无法使用) getpass模块中包含几个比较实用的功能: 1.getpass ...

  7. python中的帮助系统_python系统模块

    Python中大多数系统接口都集中在两个模块:sys和os.这么说有点过于简单化 还有一些其他的表转模块也属于这个领域他们包括: glob 用于文件名的扩展 socket 用于网络连接和进程间通信(I ...

  8. python中argv的使用_python sys.argv[]用法

    sys.argv变量是一个字符串的列表.特别地,sys.argv包含了命令行参数 的列表,即使用命令行传递给你的程序的参数. 这里,当我们执行python using_sys.py we are ar ...

  9. python paramiko模块下载_Python自动化运维实战:使用Python管理网络设备

    现在,我们已经知道如何在不同的操作系统中使用和安装Python以及如何使用EVE-NG搭建网络拓扑.在本章中,我们将学习如何使用目前常用的网络自动化库自动完成各种网络任务.Python可以在不同的网络 ...

  10. python中parse是什么_Python中optparse模块使用浅析

    最近遇到一个问题,是指定参数来运行某个特定的进程,这很类似Linux中一些命令的参数了,比如ls -a,为什么加上-a选项会响应.optparse模块实现的也是类似的功能,它是为脚本传递命令参数. 使 ...

最新文章

  1. PAT (Advanced Level) 1014. Waiting in Line (30)
  2. sqlserver2008中如何用右键可视化的设置外键
  3. 5年博龄只有十几篇文章,惭愧呀
  4. mapreduce 文件可以切分吗_MapReduce的任务流程
  5. [OS复习]虚拟存储管理技术 1
  6. centos配置oracle自启,centos 下配置oracle11gR2开机自启
  7. 为div添加滚动效果:
  8. dbunit java_java - 错误地抛出了Java DBUnit AmbiguousTableNameException - 堆栈内存溢出
  9. C++开发工程师进阶路线
  10. I2C总线驱动框架详解
  11. python生日快乐代码简单_Python编程代码:当你的亲人朋友生日时,给他运行这个程序,生日快乐弹窗!...
  12. modelica用inertia连接FlangeWithBearing时报组件不匹配连接错误:incompatible components in connect statement
  13. 全自动高清录播服务器,全自动高清录播服务器 高清录播系统
  14. Codeforces1336A Linova and Kingdom (思维)
  15. 利用word2007插入参考文献
  16. 关于近日番茄花园洪磊被拘之事的一些个人看法
  17. android auto谷歌地图,如何在 Android Auto 中使用 Waze 而不是谷歌地图
  18. CSDN外链解决方法 (2022-07-28测试可用)
  19. iOS篇—Demo5—时钟
  20. Sunt natus nam minima alias sunt molestias.DignissiFrüher ermos voluptatum ex debitis ea voluptatem.

热门文章

  1. ie浏览器使用video标签无法播放mp4文件 完美解决方案
  2. 很好用的博客文章编辑器!!!!!
  3. 朝花夕拾 —— 重温《花田半亩》
  4. java 小技巧_Java中有哪些好用的小技巧?
  5. Hibernate 映射关系 ---One2One 主键关联
  6. [营销]浅谈如何提高网站PR值
  7. 基层教学组织评估系统6_项目完结心得收获、思考人生篇
  8. php开源微博框架,记事狗微博开源代码学习笔记:微博话题列表
  9. JDF bean模块想法交流
  10. 720云导出html5,krpano 720云 WKWebView加载本地html