目录
- 文件打开
- 文件路径
- 打开模式
- 字符编码
- 文件读取
- 逐行读取
- 读取所有行
- 文件写入
- 既读又写
- 两种数据存储结构
- csv文件
- json文件
- 程序异常
- Exception万能捕捉
文件打开
文件路径
- 完整路径
with open("E:\hello.txt", "r", encoding="UTF-8") as file:
content = file.read()
print(content)
打开模式
- ‘r’: 只读模式。打开文件后只能读取文件的内容,不能修改文件。如果文件不存在,抛出 FileNotFoundError 异常。
- ‘w’: 写入模式。打开文件后只能向文件中写入内容,如果文件存在,则会覆盖原有内容。如果文件不存在,则会创建一个新文件。如果以文本模式打开文件,则会自动将换行符 ‘\n’ 转换为操作系统的换行符。如果文件已经存在,则打开文件时截断文件为零长度,相当于删除文件中所有内容。
- ‘a’: 追加模式。打开文件后只能向文件中追加内容,不能修改文件。如果文件不存在,则会创建一个新文件。
- ‘x’: 独占创建模式。用于创建新文件,如果文件已经存在,会抛出 FileExistsError 异常。
- ‘b’: 二进制模式。打开文件时,以二进制模式处理文件内容,适用于非文本文件,如图片、视频等。 不单独使用。不需要指定encoding模式。
- ‘t’: 文本模式。打开文件时,以文本模式处理文件内容,适用于文本文件。 一般省略不写。
- ‘+’: 读写模式。打开文件后既可以读取文件内容,也可以向文件中写入内容。
这些模式可以组合使用,例如 ‘rb’ 表示以二进制模式读取文件,‘w+’ 表示以读写模式打开文件。
字符编码
- ASCII:用于英文字符的编码,包含128个字符。
- Unicode:通用的字符编码方式,包含世界上所有语言的字符,常用于处理多语言文本。
- UTF-8:一种可变长字符编码方式,支持Unicode字符集,广泛应用于互联网和编程中。包含全世界所有国家需要的字符。
- GBK:用于中文字符的编码,包含简体中文和繁体中文字符。
- BIG5:用于繁体中文字符的编码。
文件读取
逐行读取
with open("E:\hello.txt", "r", encoding="UTF-8") as file:
for i in range(3):
print(file.readline())
读取所有行
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)