Python学习笔记九3:sys模块

1. sys模块

  模块sys让你能够访问与Python解释器紧密相关的变量和函数,表10-2列出了其中的一些。

表10-2 模块sys中一些重要的函数和变量
函数/变量描 述
argv命令行参数,包括脚本名
exit([arg])退出当前程序,可通过可选参数指定返回值或错误消息
modules一个字典,将模块名映射到加载的模块
path一个列表,包含要在其中查找模块的目录的名称
platform一个平台标识符,如sunos5或win32
stdin标准输入流——一个类似于文件的对象
stdout标准输出流——一个类似于文件的对象
stderr标准错误流——一个类似于文件的对象

(1) sys.argv

  变量sys.argv包含传递给Python解释器的参数,其中包括脚本名。

(2) sys.exit([arg])

  函数sys.exit退出当前程序。你可向它提供一个整数,指出程序是否成功,这是一种UNIX约定。在大多数情况下,使用该参数的默认值(0,表示成功)即可。也可向它提供一个字符串,这个字符串将成为错误消息,对用户找出程序终止的原因很有帮助。在这种情况下,程序退出时将显示指定的错误消息以及一个表示失败的编码。

(3) sys.modules

  映射sys.modules将模块名映射到模块(仅限于当前已导入的模块)。

>>> sys.modules
	#{'builtins': <module 'builtins' (built-in)>, 'sys':<module'sys' (built-in)>,'_frozen_importlib':<module'encodings'from'C:\\Users\\MIC\\AppData\\Local\\Programs\\Python\\Python36\\lib\\encodings\\__init__.py'>, 'codecs': <module 'codecs'from 'C:\\Users\\MIC\\AppData\\Local\\Programs\\Python\\Python36\\lib\\codecs.py'>,} 

(4) sys.path

  变量sys.path是一个字符串列表,其中的每个字符串都是一个目录名,执行import语句时将在这些目录中查找模块。

(5) sys.platform

  变量sys.platform(一个字符串)是运行解释器的“平台”名称。这可能是表示操作系统的名称(如sunos5或win32),也可能是表示其他平台类型(如Java虚拟机)的名称(如java1.4.0)——如果你运行的是Jython。

>>> sys.platform	#'win32'

(6) sys.stdin、sys.stdout和sys.stderr

  变量sys.stdinsys.stdoutsys.stderr是类似于文件的流对象,表示标准的UNIX概念:标准输入、标准输出和标准错误。简单地说,Python从sys.stdin获取输入(例如,用于input中),并将输出打印到sys.stdout。
  举个例子,来看看按相反顺序打印参数的问题。从命令行调用Python脚本时,你可能指定一些参数,也就是所谓的命令行参数。这些参数将放在列表sys.argv中,其中sys.argv[0]为Python脚本名。按相反的顺序打印这些参数非常容易,如下所示。

# reverseargs.py
import sys
args = sys.argv[1:]
args.reverse()
print(' '.join(args))

  如你所见,我创建了一个sys.argv的副本。也可修改sys.argv,但一般而言,不这样做更安全,因为程序的其他部分可能依赖于包含原始参数的sys.argv。另外,注意到我跳过了sys.argv的第一个元素,即脚本的名称。我使用args.reverse()反转这个列表,但不能打印这个操作的返回值,因为它就地修改列表并返回None。下面是另一种解决方案:

print(' '.join(reversed(sys.argv[1:])))

  最后,为美化输出,我使用了字符串的方法join。下面来尝试运行这个程序(假设使用的是bash shell)。

$ python reverseargs.py this is a test
test a is this
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值