目录
1)运行python脚本,执行用的相对路径,返回的是相对路径
2)运行python脚本,执行用的绝对路径,返回的是绝对路径
2、获取一个值的应用计数 sys.getrefcount(值)
3、输出重定向,打印出给定的字符串,不带回车换行符 sys.stdout.write() sys.stderr.write()
4、 将模块名映射到加载的模块,是一个字典 sys.modules
6、一个列表,包含要在其中查找模块的目录的名称 sys.path
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
本文详细介绍了Python的sys模块,包括sys.argv用于获取脚本执行参数,sys.getrefcount()获取对象引用计数,sys.stdout.write()和sys.stderr.write()进行输出重定向,sys.modules字典存储已加载模块,sys.platform识别运行平台,以及sys.path模块搜索路径。同时讲解了如何使用exit()、quit()、sys.exit()等方法退出Python脚本及其影响。
502

被折叠的 条评论
为什么被折叠?



