Python基础语法08--sys模块和退出

本文详细介绍了Python的sys模块,包括sys.argv用于获取脚本执行参数,sys.getrefcount()获取对象引用计数,sys.stdout.write()和sys.stderr.write()进行输出重定向,sys.modules字典存储已加载模块,sys.platform识别运行平台,以及sys.path模块搜索路径。同时讲解了如何使用exit()、quit()、sys.exit()等方法退出Python脚本及其影响。

目录

 

一、sys模块

1、返回执行的python脚本的参数列表 sys.argv

1)运行python脚本,执行用的相对路径,返回的是相对路径

2)运行python脚本,执行用的绝对路径,返回的是绝对路径

2、获取一个值的应用计数 sys.getrefcount(值)

3、输出重定向,打印出给定的字符串,不带回车换行符 sys.stdout.write()  sys.stderr.write()

4、 将模块名映射到加载的模块,是一个字典 sys.modules

5、一个平台标识符  sys.platform 

6、一个列表,包含要在其中查找模块的目录的名称 sys.path

二、退出python脚本运行的方法

1、exit() 退出脚本运行,无错误退出,exit code 0

2、quit()退出脚本运行,无错误退出,exit code 0

3、sys.exit(0)退出脚本运行,无错误退出,exit code 0

4、sys.exit(1)退出脚本运行,有错误退出,exit code 1


一、sys模块

  • sys模块提供了一系列有关Python运行环境的变量和函数;
  • sys.argv,返回执行的python脚本的参数列表
  • sys.path,包含了一个 Python 解释器自动查找所需模块的路径的列表; 一个列表,包含要在其中查找模块的目录的名称;
  • sys.getrefcount(a),获取一个值的应用计数;
  • sys.stdout.write()  sys.stderr.write(), 输出重定向,打印出给定的字符串,不带回车换行符;
  • sys.modules, 将模块名映射到加载的模块,是一个字典;
  • sys.version,获取Python解释程序的版本信息
  • sys.platform,一个平台标识符,如sunos5或win32
  • sys.exit(n),中途退出程序,当参数n取值为非0时,会引发一个SystemExit异常,从而可以在主程序中捕获该异常;

 

1、返回执行的python脚本的参数列表 sys.argv

  • 获取当前正在执行的命令行参数的参数列表(list);

 

变量解释:

  • sys.argv[0]当前程序名
  • sys.argv[1]第一个参数
  • sys.argv[2]第二个参数
  • len(sys.argv)-1 参数个数(减去文件名)

 

cmd模式下运行python脚本:

1)运行python脚本,执行用的相对路径,返回的是相对路径

 D:\Nikey\Python\PyCharm\basicProgram>python test.py test1 test2 test3

test.py脚本

import sys
print(sys.argv)  # 执行的python脚本的参数列表,返回数组类型,['test.py', 'test1', 'test2', 'test3']
print(sys.argv[0])  # 第一个参数,是脚本名称
print(sys.argv[1])  # 第二个参数,是传入脚本的参数
print("第二个参数:%s" % sys.argv[2]) # 第三个参数,是传入脚本的参数
print("参数个数:%s" % (len(sys.argv)-1))  # 返回参数个数

输出结果:
['test.py', 'test1', 'test2', 'test3']
test.py
test1
第二个参数:test2
参数个数:3

 

2)运行python脚本,执行用的绝对路径,返回的是绝对路径

 D:\Nikey\Python\PyCharm\basicProgram>python D:\Nikey\Python\PyCharm\basicProgram\test.py test1 test2 test3

test.py脚本同上

输出结果:

['D:\\Nikey\\Python\\PyCharm\\basicProgram\\test.py', 'test1', 'test2', 'test3']
D:\Nikey\Python\PyCharm\basicProgram\test.py
test1
第二个参数:test2
参数个数:3
 

2、获取一个值的应用计数 sys.getrefcount(值)

import sys

# 获取一个值的应用计数
a = [11, 22, 33]
b = a
c = [1]
print(sys.getrefcount(a))  # 返回值为3; a,b,还有gerefcount方法3个都在使用[11, 22, 33]列表
print(sys.getrefcount(b))  # 返回值为3; a,b,还有gerefcount方法3个都在使用[11, 22, 33]列表
print(sys.getrefcount(c))  # 返回值为2; c,还有gerefcount方法2个都在使用[1]列表
print(sys.getrefcount([1]))  # 返回值为1; 只有gerefcount方法在使用[1]列表
print(sys.getrefcount([2]))  # 返回值为1; 只有gerefcount方法在使用[2]列表

输出结果:

3
3
2
1
1

 

3、输出重定向,打印出给定的字符串,不带回车换行符 sys.stdout.write()  sys.stderr.write()

  • stdin,标准输入流,一个类似于文件的对象;
  • stdout,标准输出流,一个类似于文件的对象;
  • stderr,标准错误流,一个类似于文件的对象;

1)打印出给定的字符串,不带回车换行sys.stdout.write() 

import sys
for i in range(3):
    sys.stdout.write('小马过河')

输出结果:输出结果不带回车换行

 

2)打印出给定的字符串,不带回车换行sys.stderr.write()

import sys
for i in range(3):
    sys.stderr.write('小马过河')

输出结果:输出结果不带回车换行

 

4、 将模块名映射到加载的模块,是一个字典 sys.modules

import sys
print(sys.modules.keys())
print(sys.modules.get('os'))

输出结果:

dict_keys(['sys', 'builtins', '_frozen_importlib', '_imp', '_warnings', '_frozen_importlib_external', '_io', 'marshal', 'nt', '_thread', '_weakref', 'winreg', 'time', 'zipimport', '_codecs', 'codecs', 'encodings.aliases', 'encodings', 'encodings.utf_8', '_signal', '__main__', 'encodings.latin_1', '_abc', 'abc', 'io', '_stat', 'stat', '_collections_abc', 'genericpath', 'ntpath', 'os.path', 'os', '_sitebuiltins', '_locale', '_bootlocale', '_codecs_cn', '_multibytecodec', 'encodings.gbk', 'pywin32_bootstrap', 'sitecustomize', 'site'])
<module 'os' from 'C:\\Python38\\lib\\os.py'>

 

5、一个平台标识符  sys.platform 

import sys
print(sys.platform)  # windows下运行,输出win32

输出结果:

win32

 

6、一个列表,包含要在其中查找模块的目录的名称 sys.path

import sys
print(sys.path)

输出结果:

['D:\\Nikey\\Python\\PyCharm\\basicProgram', 'D:\\Nikey\\Python\\PyCharm\\basicProgram', 'D:\\Nikey\\Python\\PyCharm\\basicProgram\\basic\\module', 'D:\\Nikey\\Python\\PyCharm\\basicProgram\\basic\\file', 'D:\\Nikey\\Python\\PyCharm\\basicProgram\\爬虫\\ppt', 'D:\\Nikey\\Python\\PyCharm\\basicProgram\\爬虫\\图片验证码识别', 'D:\\Nikey\\Python\\PyCharm\\basicProgram\\tb\\获取需求信息', 'D:\\Program Files\\JetBrains\\PyCharm 2019.1.3\\helpers\\pycharm_display', 'C:\\Python38\\python38.zip', 'C:\\Python38\\DLLs', 'C:\\Python38\\lib', 'C:\\Python38', 'C:\\Users\\nikey.lee\\AppData\\Roaming\\Python\\Python38\\site-packages', 'C:\\Python38\\lib\\site-packages', 'C:\\Python38\\lib\\site-packages\\win32', 'C:\\Python38\\lib\\site-packages\\win32\\lib', 'C:\\Python38\\lib\\site-packages\\Pythonwin', 'D:\\Program Files\\JetBrains\\PyCharm 2019.1.3\\helpers\\pycharm_matplotlib_backend']

 

 

二、退出python脚本运行的方法

  • exit(),无错误退出,exit code 0
  • quit(),无错误退出,exit code 0
  • sys.exit(0),无错误退出,exit code 0
  • sys.exit(1),有错误退出,exit code 1

 

1、exit() 退出脚本运行,无错误退出,exit code 0

var = [0, 1, 2]
print("var[0]的取值:", var[0])
exit()  # 退出脚本运行
print("var[1]的取值:", var[1])

输出结果:

var[0]的取值: 0

 Process finished with exit code 0

 

2、quit()退出脚本运行,无错误退出,exit code 0

var = [0, 1, 2]
print("var[0]的取值:", var[0])
quit()  # 退出脚本运行
print("var[1]的取值:", var[1])

输出结果:

var[0]的取值: 0

Process finished with exit code 0

 

3、sys.exit(0)退出脚本运行,无错误退出,exit code 0

  • try/finally块中调用它时,finally子句依然会执行
# 程序执行中,需要时停止执行
import sys
var = [0, 1, 2]
print("var[0]的取值:", var[0])
sys.exit(0)  # 退出脚本运行, 无错误推出
print("var[1]的取值:", var[1])

输出结果:

var[0]的取值: 0

Process finished with exit code 0

 

4、sys.exit(1)退出脚本运行,有错误退出,exit code 1

  • try/finally块中调用它时,finally子句依然会执行
# 程序执行中,需要时停止执行
import sys
var = [0, 1, 2]
print("var[0]的取值:", var[0])
sys.exit(1)  # 退出脚本运行, 有错误推出,SystemExit: 1
print("var[1]的取值:", var[1])

输出结果:

var[0]的取值: 0

Process finished with exit code 1

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值