Python之sys模块

模块主要是由官方或者第三方已经完成之后的库。里面已经封装了部分写好的功能。

如果你从Python解释器退出并再次进入,之前的定义(函数和变量)都会丢失。因此,如果你想编写一个稍长些的程序,最好使用文本编辑器为解释器准备输入并将该文件作为输入运行。这被称作编写 脚本 。随着程序变得越来越长,你或许会想把它拆分成几个文件,以方便维护。你亦或想在不同的程序中使用一个便捷的函数, 而不必把这个函数复制到每一个程序中去。

为支持这些,Python有一种方法可以把定义放在一个文件里,并在脚本或解释器的交互式实例中使用它们。这样的文件被称作 模块 ;模块中的定义可以 导入 到其它模块或者 模块(你在顶级和计算器模式下执行的脚本中可以访问的变量集合)。

模块是一个包含Python定义和语句的文件。文件名就是模块名后跟文件后缀 .py 。在一个模块内部,模块名(作为一个字符串)可以通过全局变量 __name__ 的值获得。

 

sys模块

(1) sys.argv :实现从程序外部向程序传递参数。

代码:

 

import sys
print(sys.argv)#命令行参数List
print(sys.argv[0])#第一个元素是程序本身路径

 

输出结果:

    ['/home/jsj/PycharmProject/myjob/src/Sys_01.py']
    /home/jsj/PycharmProject/myjob/src/Sys_01.py

(2)sys.exit([args]):程序中间的退出,arg=0为正常退出。

代码:

def sysexit(args):
print("我是sys.exit的测试模块")
if args == 0:
sys.exit(0)
print("testing")
sysexit(1) #可以输出我是sys.exit的测试模块和testing
sysexit(0)#只可以输出我是sys.exit的测试模块
print("hello")#这一行是无法输出的

输出结果:

  我是sys.exit的测试模块
  testing
  我是sys.exit的测试模块

将sysexit(1)和sysexit(0)作交换则输出的结果如下:

  我是sys.exit的测试模块

结论:遇到sys.exit(0)系统将直接退出,不执行下面的代码!!args为其他都是异常退出,为非零。对于非零更深的分类,不同系统规定不一样。

(3)sys.getdefaultencoding(): 获取系统当前编码,一般默认为ascii。

代码:

print(sys.getdefaultencoding())#获取当前编码,在这里我设置的编码为utf-8

输出结果:

  utf-8

(4)sys.setdefaultencoding(): 设置系统默认编码,执行dir(sys)时不会看到这个方法,在解释器中执行不通过,可以先执行reload(sys),在执行 setdefaultencoding('utf8'),此时将系统默认编码设置为utf8。(见设置系统默认编码 )

(5)sys.getfilesystemencoding(): 获取文件系统使用编码方式,Windows下返回'mbcs',mac下返回'utf-8'.

(6)sys.path: 获取指定模块搜索路径的字符串集合,可以将写好的模块放在得到的某个路径下,就可以在程序中import时正确找到

代码:

print(sys.path)#获取模块路径集合

输出结果:

['/home/jsj/PycharmProject/myjob/src', '/home/jsj/PycharmProject/myjob', '/usr/lib/python36.zip', '/usr/lib/python3.6', '/usr/lib/python3.6/lib-dynload', '/home/jsj/PycharmProject/myjob/venv/lib/python3.6/site-packages', '/home/jsj/PycharmProject/myjob/venv/lib/python3.6/site-packages/setuptools-39.1.0-py3.6.egg', '/home/jsj/PycharmProject/myjob/venv/lib/python3.6/site-packages/pip-10.0.1-py3.6.egg']

注意:sys.path.append("自定义模块路径")

一般的标准

(7)sys.platform: 获取当前系统平台

代码:

 print(sys.platform)#获取当前系统平台

输出结果:

  linux(这个地方可能不一样)

(8)sys.modules:Python中所有加载到内存的模块都放在sys.modules。当import一个模块时首先会在这个列表中查找是否已经加载了此模块,如果加载了则只是将模块的名字加入到正在调用import的模块的Local名字空间中。如果没有加载则从sys.path目录中按照模块名称查找模块文件,模块文件可以是py、pyc、pyd,找到后将模块载入内存,并加入到sys.modules中,并将名称导入到当前的Local名字空间。

(9)sys.stdin,sys.stdout,sys.stderr: stdin , stdout , 以及stderr 变量包含与标准I/O 流对应的流对象. 如果需要更好地控制输出,而print 不能满足你的要求, 它们就是你所需要的. 你也可以替换它们, 这时候你就可以重定向输出和输入到其它设备( device ), 或者以非标准的方式处理它们.

 

 

 

 

 



 

转载于:https://www.cnblogs.com/hhxz/p/10566481.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值