'''
sys.argv[0]表示程序文件本身文件名(含路径)
sys.argv[1]表示运行命令的第一个参数
sys.argv[1:]表示运行命令的第二个到最后一个参数
sys.argv 表示运行命令的全部参数
'''
import sys
#1.处理命令运行参数sys.argv
print('程序路径:',sys.argv[0])
#2.处理模块sys.path
'''
path列表是一个由目录名构成的列表,返回模块的搜索途径 python从中查找模块(python 源模块 编译模块 或者二进制扩展)
'''
# print(sys.path)
# print('Path 包括:',len(sys.path),'各部分构成')
# sys.path.insert(0,'samples') #将指定路径插入到path中第一个位置
# print(sys.path)
# print('Path 包括:',len(sys.path),'各部分构成')
# sys.path = [] #删除path中所有路径
# print(sys.path)
#查找模块在某个地方
# def d(module):
# print(module,'=>')
# #builtin_module_names列表包含python解释器中所有内建模块的名称
# if module in sys.builtin_module_names: #查找内建模块是否存在
# print('<builtins>')
# else:
# module = __import__(module) #非内建模块输出模块路径 先导入 在输出
# print(module.__file__)
# d("os")
# d("io")
# d("abc")
# print(sys.modules.keys()) #module字典包含所有的加载的模块
#3.处理引用记数:getrefcount函数可以返回对象的引用计数即这个对象的使用次数
# 当object对象的引用计数为0时,系统会回收该对象即销毁该对象
a = [1,2,3]
b = [1,2,3,4]
b = a
c = b
print(sys.getrefcount(a))
#4.跟踪程序:setprofiler 函数允许你配置一个分析函数(profiling function)
#这个函数会在每次调用某个函数或方法时被调用(明确或隐含的) 或是遇到异常的时候调用
# def d(x):
# print('123')
# return x
# def test(n):
# j = 0
# for i in range(n):
# j = j + i
# return n
# def tracer(frame,event,arg):
# print(event,frame.f_code.co_name,frame.f_lineno,"->",arg)
# return tracer
# #d()
# #跟踪器将在下面=次函数函数调用,返回,或异常时激活
# sys.settrace(tracer)
# #跟踪这次函数调用
# test(1)
# d(333)
# #禁用跟踪器
# sys.settrace(None)
# #不会跟踪这次函数
# test(2)
#5.处理标准输出/输入
class Redirect:
def __init__(self,stdout):
self.stdout = stdout
def write(self,s):
self.stdout.write(str.lower(s)) #将输出内容转为小写处理
#重定向标准输出(包括print语句)
old_stodout = sys.stdout
sys.stdout = Redirect(sys.stdout)
print("PYTHON KENOWLEDGE")
print("FRISKT HUM/303226R")
#恢复标准输出
sys.stdout = old_stodout
print("MmmmmmmmmMMIII!")
#6.退出程序
'''
执行到主程序的末尾时,python解释器会自动退出,但是如果要中途退出程序
需要调用sys.exit函数,它带有一个可选的整数参数(参数为空默认0,0,代表正常退出)返回给调用它的程序
'''
print('hello')
sys.exit(0) #没有错误正常退出
print('python')
#输出结果:hello
#注意:此处的sys.exit()并不是立即退出,而是引发一个SystemExit异常,
# 这意味着你可以在程序中捕获对sys.exit()的调用,代码如下
import sys
print('hello')
try:
sys.exit
except SystemExit as ex:
print('这次异常抛出了异常为:',ex)
print(1,2,3)
sys.exit(1)#不正常退出
print(1,2,3)
print(1,2,3)
print(1,2,3)
print(1,2,3)