十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
sys是与解释器相关信息的模块
网站建设哪家好,找成都创新互联!专注于网页设计、网站建设、微信开发、成都小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了崆峒免费建站欢迎大家使用!
sys.argv # 命令行参数List,第一个元素是程序本身路径
sys.exit(n) # 退出程序,正常退出时exit(0)
sys.version # 获取Python解释程序的版本信息
sys.maxint # 最大的Int值
sys.path # 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
sys.platform # 返回操作系统平台名称
sys.argv[]说白了就是一个从程序外部获取参数的桥梁,这个“外部”很关键,因为我们从外部取得的参数可以是多个,所以获得的是一个列表(list),也就是说sys.argv其实可以看作是一个列表,所以才能用[]提取其中的元素。其第一个元素是程序本身,随后才依次是外部给予的参数。
下面我们通过一个极简单的test.py程序的运行结果来说明它的用法。
将test.py保存在c盘的根目录下。
在程序中找到 ‘运行'-点击-输入"cmd"-回车键 进入控制台命令窗口(如下图),先输入cd c:\ (作用是将命令路径改到c盘根目录),然后输入test.py运行我们刚刚写的程序:
得到的结果是C:\test.py,这就是0指代码(即此.py程序)本身的意思。
然后我们将代码中0改为1 :
保存后,再从控制台窗口运行,这次我们加上一个参数,输入:test.py wha
得到的结果就是我们输入的参数what,看到这里你是不是开始明白了呢。
那我们再把代码修改一下:
保存后,再从控制台窗台运行程序,这次多加几个参数,以空格隔开:
test.py a b c d e f
得到的结果为[‘b', 'c', 'd', 'e', 'f']
Sys.argv其实就是一个元组,里边的项为用户输入的参数,关键就是要明白这参数是从程序外部输入的,而非代码本身的什么地方,要想看到它的效果就应该将程序保存了,从外部来运行程序并给出参数。
这个例子是简明python教程上的,明白它之后你就明白sys.argv[]了。
保存程序为sample.py.我们验证一下:
1)命令行带参数运行:sample.py _version 输出结果为:version 1.2
2)命令行带参数运行:sample.py _help 输出结果为:This program prints files??
3)在与sample.py同一目录下,新建a.txt的记事本文件,内容为:test argv;命令行带参数运行:sample.py a.txt,输出结果为a.txt文件内容:test argv,这里也可以多带几个参数,程序会先后输出参数文件内容。
sys模块主要是针对与Python解释器相关的变量和方法,不是主机操作系统。
导入方式: import sys
sys.argv是一个脚本执行参数列表,列表的第一个元素是脚本名称,从第二个元素开始才是真正的参数。
path是一个目录列表,供Python从中查找模块。在Python启动时,sys.path根据内建规则和PYTHONPATH变量进行初始化。sys.path的第一个元素通常是个空字符串,表示当前目录。
sys.path本质上是一个列表,可以进行append、insert、pop、remove等各种列表相关的操作,但通常都进行append操作,添加自己想要的查找路径。
stdin 用于所有的交互式输入(包括input()函数)。
stdout 用于print()的打印输出或者input()函数的提示符。
stderr 用于解释器自己的提示信息和错误信息。
简而言之,这三个属性就是操作系统的标准输入、输出和错误流,它们返回的都是一个“文件类型”对象,支持read()、write()和flush()等操作,就像用open()方法打开的文件对象那样!
当我们用 input('Please input something!') 时,事实上是先输出提示信息,然后捕获输入。 以下两组等价:
当我们 print(obj) 的时候,事实上是调用了 sys.stdout.write(obj+'\n') ,将内容打印到控制台(默认是显示器),然后追加一个换行符。以下两行等价:
默认情况下 sys.stdout 指向控制台。如果把文件对象赋值给 sys.stdout ,那么 print () 调用的就是文件对象的 write() 方法。
如果你还想同时在控制台打印的话,最好先将原始的控制台对象引用保存下来,向文件中打印之后再恢复 sys.stdout .
参考:
sys-系统特定的参数和功能
该模块提供对解释器使用或维护的一些变量的访问,以及与解释器强烈交互的函数。它始终可用。
sys.argv
传递给Python脚本的命令行参数列表。argv[0]是脚本名称(依赖于操作系统,无论这是否是完整路径名)。如果使用-c解释器的命令行选项执行命令,argv[0]则将其设置为字符串’-c’。如果没有脚本名称传递给Python解释器,argv[0]则为空字符串。
要循环标准输入或命令行上给出的文件列表,请参阅fileinput模块。
sys.byteorder
本机字节顺序的指示符。这将具有’big’big-endian(最重要的字节优先)平台和’little’little-endian(最不重要的字节优先)平台的价值。
推荐学习《python教程》。
2.0版本中的新功能
sys.builtin_module_names
一个字符串元组,给出了编译到此Python解释器中的所有模块的名称。(此信息不以任何其他方式提供 - modules.keys()仅列出导入的模块。)
sys.call_tracing(func,args )
呼叫func(*args),同时启用跟踪。跟踪状态被保存,然后恢复。这是从调试器从检查点调用,以递归调试其他一些代码。
sys.copyright
包含与Python解释器相关的版权的字符串
sys._clear_type_cache()
清除内部类型缓存。类型缓存用于加速属性和方法查找。仅在参考泄漏调试期间使用该函数删除不必要的引用。
此功能仅用于内部和专门用途。
版本2.6中的新功能。
sys._current_frames()
返回一个字典,将每个线程的标识符映射到调用该函数时该线程中当前活动的最顶层堆栈帧。请注意,traceback模块中的函数可以在给定这样的帧的情况下构建调用堆栈。
这对于调试死锁是最有用的:这个函数不需要死锁线程的协作,只要这些线程的调用堆栈保持死锁,它们就会被冻结。对于非死锁线程返回的帧在调用代码检查帧时可能与该线程的当前活动没有关系。
此功能仅用于内部和专门用途。
2.5版中的新功能。
sys.dllhandle
指定Python DLL句柄的整数。可用性:Windows。
sys.displayhook(值)
如果值不是None,则此函数sys.stdout将其打印到并保存builtin._。
sys.displayhook调用在 交互式Python会话中输入的表达式的结果。可以通过为其分配另一个单参数函数来自定义这些值的显示sys.displayhook。
sys.dont_write_bytecode
如果这是真的,Python将不会尝试在源模块的导入上编写.pyc或.pyo文件。此值最初设置为True或 False取决于-B命令行选项和 PYTHONDONTWRITEBYTECODE 环境变量,但您可以自己设置它来控制字节码文件的生成。
版本2.6中的新功能。
sys.excepthook(类型,值,回溯)
此函数打印出给定的回溯和异常sys.stderr。
当引发异常并且未被捕获时,解释器sys.excepthook使用三个参数调用 ,即异常类,异常实例和回溯对象。在交互式会话中,这发生在控制返回到提示之前; 在Python程序中,这发生在程序退出之前。可以通过为其分配另一个三参数函数来自定义此类顶级异常的处理sys.excepthook。
sys._displayhook_
sys._excepthook_
这些对象包含的原始值displayhook,并excepthook 在程序的开始。它们被保存,以便displayhook和 excepthook情况下可以恢复他们碰巧得到破碎的对象替换。
sys.exc_info()
此函数返回三个值的元组,这些值提供有关当前正在处理的异常的信息。返回的信息特定于当前线程和当前堆栈帧。如果当前堆栈帧未处理异常,则从调用堆栈帧或其调用者获取信息,依此类推,直到找到正在处理异常的堆栈帧。这里,“处理异常”被定义为“正在执行或已执行except子句。”对于任何堆栈帧,只能访问有关最近处理的异常的信息。
如果堆栈中的任何位置都没有处理异常,None则返回包含三个值的元组 。否则,返回的值是。它们的含义是:type获取正在处理的异常的异常类型(类对象); value获取异常参数(其 关联值或第二个参数,如果异常类型是类对象,则始终为类实例); traceback 获取一个回溯对象(参见参考手册),该对象在最初发生异常的位置封装调用堆栈。(type, value, traceback)raise
如果exc_clear()被调用,则此函数将返回三个None值,直到当前线程中引发另一个异常或执行堆栈返回到正在处理另一个异常的帧。