Python进阶复习-文件与异常

目录

  • 文件打开
    • 文件路径
    • 打开模式
    • 字符编码
  • 文件读取
    • 逐行读取
    • 读取所有行
  • 文件写入
  • 既读又写
  • 两种数据存储结构
    • csv文件
    • json文件
  • 程序异常
    • Exception万能捕捉

文件打开

文件路径

  • 完整路径
with open("E:\hello.txt", "r", encoding="UTF-8") as file:
    content = file.read()  
    print(content)

打开模式

  1. ‘r’: 只读模式。打开文件后只能读取文件的内容,不能修改文件。如果文件不存在,抛出 FileNotFoundError 异常。
  2. ‘w’: 写入模式。打开文件后只能向文件中写入内容,如果文件存在,则会覆盖原有内容。如果文件不存在,则会创建一个新文件。如果以文本模式打开文件,则会自动将换行符 ‘\n’ 转换为操作系统的换行符。如果文件已经存在,则打开文件时截断文件为零长度,相当于删除文件中所有内容。
  3. ‘a’: 追加模式。打开文件后只能向文件中追加内容,不能修改文件。如果文件不存在,则会创建一个新文件。
  4. ‘x’: 独占创建模式。用于创建新文件,如果文件已经存在,会抛出 FileExistsError 异常。
  5. ‘b’: 二进制模式。打开文件时,以二进制模式处理文件内容,适用于非文本文件,如图片、视频等。 不单独使用。不需要指定encoding模式。
  6. ‘t’: 文本模式。打开文件时,以文本模式处理文件内容,适用于文本文件。 一般省略不写。
  7. ‘+’: 读写模式。打开文件后既可以读取文件内容,也可以向文件中写入内容。

这些模式可以组合使用,例如 ‘rb’ 表示以二进制模式读取文件,‘w+’ 表示以读写模式打开文件。

字符编码

  1. ASCII:用于英文字符的编码,包含128个字符。
  2. Unicode:通用的字符编码方式,包含世界上所有语言的字符,常用于处理多语言文本。
  3. UTF-8:一种可变长字符编码方式,支持Unicode字符集,广泛应用于互联网和编程中。包含全世界所有国家需要的字符。
  4. GBK:用于中文字符的编码,包含简体中文和繁体中文字符。
  5. BIG5:用于繁体中文字符的编码。

文件读取

逐行读取

with open("E:\hello.txt", "r", encoding="UTF-8") as file:
    for i in range(3):
        print(file.readline())  

Python进阶复习-文件与异常_第1张图片

读取所有行

with open("E:\hello.txt", "r", encoding="UTF-8") as file:
    text=file.readlines()
    print(text)
['hello world\n', 'this is a file\n', 'for my study']

文件写入

  • "w"模式
  • "a"模式
  • file.writelines()函数

既读又写

  • "r+"模式:文件名不存在则报错。写之前需要人为把指针移到末尾再开始写。
with open("E:\hello.txt", "r+", encoding="UTF-8") as f:
#     for line in f:
#         print(line)   # 全部读一遍后,指针到达结尾
    f.seek(0,2)         # 或者可以将指针移到末尾f.seek(偏移字节数,位置(0:开始;1:当前位置;2:结尾))
    text = ["第四行,\n", "第五行\n"]
    f.writelines(text)
  • "w+"模式:文件不存在会创建新文件。文件存在,立刻清空原内容。读取前记得需要人为把指针移到最开始的位置。
with open("E:\hello.txt", "w+", encoding="UTF-8") as f:
    text = ["新的第一行\n", "新的第二行\n"]  # 清空原内容
    f.writelines(text)                             # 写入新内容,指针在最后
    f.seek(0,0)            # 指针移到开始
    print(f.read())        # 读取内容
  • "a+"模式:文件不存在会创建新文件。文件存在,不会清空原内容。读取前记得需要人为把指针移到最开始的位置。
with open("E:\hello.txt", "a+", encoding="UTF-8") as f:
    text = ["新的第三行\n", "新的第四行\n"]  
    f.writelines(text)                             # 指针在最后,追加新内容, 
    f.seek(0,0)            # 指针移到开始
    print(f.read())        # 读取内容

两种数据存储结构

csv文件

  • 由逗号将数据分开的字符序列,可以由excel打开

json文件

  • 存储字典类型的数据
  • dump()写入
  • load()读取

程序异常

Exception万能捕捉

ls = []
d = {"name": "mybaby"}
try:
    y = m
except Exception as e:    # 虽不能获得错误具体类型,但可以获得错误的值
    print(e)

你可能感兴趣的:(编程语言---Python,python,开发语言)