Python learning notes<six>

本文详细介绍了Python中的异常处理机制,包括try-except、异常类型捕获和自定义异常。同时,讲解了模块的导入方式及常用内置模块如sys、os、time和random的功能。接着,阐述了包的概念及其使用,以及文件的读写操作,特别是open函数的使用。最后,提到了JSON文件的读写操作。
摘要由CSDN通过智能技术生成

目录

一、关于异常

二、模块

三、包

四、文件读写操作

open()函数:open(file, mode='r',encoding=None)   -->  打开文件


一、关于异常

介绍:当Python无法正常处理程序时就会发生一个异常,会影响程序的正常执行。

异常也是Python对象,表示一个错误。

捕获:当Python脚本有发生异常的可能时,就需要捕获异常,避免程序终止执行。

语法:try:: 正常程序执行此块代码;except:: 抛出错误执行此代码块

例:1.将以下代码进行异常捕获 2.当代码异常时,将ipt赋值为1

ipt = input("请输入:")
ipt = float(ipt)
print(ipt)

异常类型捕获:但是仅仅使用以上异常捕获,虽然不会报错终止程序。但是无法记录下具体异常种类。如需记录下具体异常种类,则需要捕获该具体异常。

语法:

try:
    pass
except 当前异常对象 as e:  # e = 当前异常对象 
    print(e)   			  

例:捕获以下代码的异常类型并输出

li = [1, 2, 3]
li[3]  # IndexError

try:
    li = [1, 2, 3]
    li[3]  # IndexError
except IndexError as e:  
    print(e)           # list index out of range

notice:该捕获方式仅能捕获IndexError这一类异常。那么实际上,这种细分的异常种类有很多,可以通过其共同父类Exception捕获输出。

try:
    # li = [1,2,3]
    # li[3]
    int('a')
except Exception as e:
    print(e)   		   # invalid literal for int() with base 10: 'a'

try-except-else:如果抛出异常执行except内部代码;如果程序正常执行else内部代码

try-finally:不管程序有无发生异常,都将执行finally内部代码。

主动触发异常:在实际开发中,在程序不满足某条件时,通常会主动抛出异常。

语法:raise Exception()

例:判断煎饼熟了没,当烹饪时间小于5时,则主动触发没熟异常;否则熟了。

def test(level):
    if level<5:
        raise Exception("没熟没熟")


try:
    test(5)               
except Exception as e:
    print(e)             
else:
    print("熟了 请吃")    

自定义异常

当需要自定义满足一些规则时,就可以自定义异常。

自定义异常通过创建一个新的异常类,自定义名字与内容,并且需要继承Exception类实现。

例:自定义QianAnError异常类

class QianAnError(Exception):
    def __init__(self,msg):
        self.message = msg

    def __str__(self):
        return self.message


# e = OldQianAnError("自定义异常")
# print(e)

try:
    raise OldQianAnError("自定义异常")    
except OldQianAnError as e:
    print(e)                     

断言:assert断言用于判断一个表达式,当表达式条件为False时触发断言异常AssertionError。

语法:assert 断言

notice:断言用于强制用户服从,可捕获,但是一般不捕获。

二、模块

模块是一个包含所有你定义的函数和变量的文件,其扩展名为.py。模块可以被其它程序引入,以使用 该模块中的函数等功能。这也是使用python标准库的方法。

1.导入模块的方式:

  • import module_name  
  • from module_name import name1,name2..  
  • from module_name import *  
  • from module_name import func as demo_func 

2,常用内置模块

sys 模块:是与python解释器交互模块 

常用方法:sys.argv[] --> 是从程序外部获取参数的桥梁-->[]

  • 其中sys.argv[0]-->程序本身文件路径
  • sys.argv[1]-->外部运行时传递的参数

sys.version --> 用来显示解释器版本信息

sys.path     --> 用来显示模块搜索路径

sys.exit()   -->用来退出程序

OS模块:是与操作系统相关的模块 

常用方法:

os.getcwd()           --> 用来打印当前工作目录

os.chdir()              -->  改变当前工作目录

os.makedirs()        -->  以递归方式创建多个文件夹

os.removedirs()    -->   以递归方式删除多个空文件夹

os.mkdir()             -->  创建单个文件夹

os.rmdir()             -->   删除单个空文件夹

os.path.exists()     -->   判断该路径下的文件或文件夹是否存在

os.path.join()        -->   拼接路径

time模块:是与时间相关的模块 

常用方法:

time.sleep()             --> 延迟执行时间

time.time()              --> 秒时间戳

time.localtime()      --> 本地时间

time.strftime()        --> 接收以时间元组,并返回以可读字符串表示的当地时间,格式由参数format决定。

datetime也是与时间相关的模块

datetime.datetime.now() --> 输出当前时间

random模块:是随机模块 

常用方法:

random.random()        --> 随机生成[0,1)的数

random.randint()        -->  随机生成整数[]

random.choice()         -->  随机在序列取元素

random.shuffle()        -->  打乱传入的容器内部顺序并返回

random.sample()        -->  随机取样

random.randrange()   -->  随机取整数[)

Json模块:JSON是一种使用广泛的轻量数据格式. Python标准库中的json模块提供了JSON数据的处理功能。  由于JSON与python中的字典格式非常像。所以python中的json模块也相当于是用来使json与字典做转换。但是要注意的是,json中的数据必须使用双引号包裹。

常用方法:

json.loads()            -->  json转为字典(适用于语句)

json.dumps()         -->  字典转为json(适用于语句)

json.load()             -->  json转为字典(适用于文件)

json.dump()           -->  字典转为json(适用于文件)

三、包

为了组织好模块,会将多个模块分为包。Python 处理包也是相当方便的。简单来说,包就是文件夹,但该文件夹下必须存在 __init__.py 文件。

导入包的方法:

  • from 包名 import 模块名
  • from 包名 import * ——> 模块名.方法名()访问 ,用__all__暴露接口
  • import 包名 ——>用包名.模块名.方法名()访问,需要import . import demo,demo1

四、文件读写操作

open()函数:open(file, mode='r',encoding=None)   -->  打开文件

  1. file                       --> 文件路径
  2. mode                   --> 操作文件模式:r-只读模式;w-写入;a-追加
  3. encoding             --> 指定文件编码:

               utf-8               --> 当文件中文乱码时,则指定编码为utf-8解决。

只读模式r:

  1. f.readable()          --> 判断是否可读,返回值为布尔
  2. f.read(n)               --> 读取全部,在python3中n为字符
  3. f.readline()           --> 逐行读取,包括\n
  4. f.readlines()          --> 读取所有,返回值为列表,包括\n
  5. f.tell()                   --> 文件指针所处文件位置

例:新建Students.txt

通过f.readlines()读取文件全部内容

去掉\n换行符

f = open('Students.txt','r')

res = f.readlines()
for i in range(len(res)):
    res[i] = res[i].rstrip("\n")
print(res)

f.close()		  # 关闭文件

notice:

f = open('test02.txt','w')
# f.write("Hello World")
f.write("Logic Education")  # 覆盖
f.close()
  1. r模式,当文件不存在时则报错
  2. f.read()           --> 读取全部
  3. f.readline()     -->逐行读取
  4. f.readlines()    -->读取全部,且为列表
  5. 读取不可逆

只写模式w:

  1. f.writable()          -->  判断是否可写
  2. f.write(str)           -->  写入内容,返回值为写入字符串的长度
  3. f.writelines(seq)  --> 写入多行,但需要自己添加换行符

notice:

  1. w模式,当文件不存在时
    创建test02.txt文件,并且写入内容

    创建文件
  2. 再次写入为覆盖

例:创建test02.txt文件,并且写入内容
 

f = open('test02.txt','w')
# f.write("Hello World")
f.write("Logic Education")  # 覆盖
f.close()

Python操作json文件:

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

格式:'{"key":"value"}'

例:将{"age":18}写入data.json文件中

import json

data = {"name":"qianan"}     # python对象 字典

f = open('data.json','w')

json.dump(data,f)         # 将python对象转为json对象 写入f文件

例:读取data.json文件中的数据

import json

f = open('data.json','r')

j_data = json.load(f)     # 将json对象转为python对象(字典) 

f.close()

要注意的是,当文件打开之后,必须通过f.close()语句来关闭文件,释放资源。

try:
    f = open('test2.txt','r')
    f.read()
finally:
    if f:
        f.close()

with open()  --> 上下文管理器
with关键字用于Python的上下文管理器机制。为了防止诸如open这一类文件打开方法在操作过程出现异常或错误,或者最后忘了执行close方法,文件非正常关闭等可能导致文件泄露、破坏的问题 。Python提供了with这个上下文管理器机制,保证文件会被正常关闭。在它的管理下,不需要再写close语句。其余操作都同open()一致。

with open('Students.txt','r') as f:
    print(f.readlines())

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值