七、文件操作
windows 系统中命名规则:文件名最长使用255个字符
1.读取整个txt文件
文件路径
# 相对文件路径
# 针对于当前文件所在路径下xxx\xxx.txt
# 绝对文件路径
# 反斜杠前添加’r‘,显示声明字符串不要转义
f = open(r"C:\Users\86157\Desktop\test.txt", 'r', encoding="UTF-8")
# 双反斜杠
t = open("C:\\Users\\86157\\Desktop\\test.txt", 'r', encoding="UTF-8")
# Linux和Windows系统下都通用正斜杠
e = open("C:/Users/86157/Desktop/test.txt", 'r', encoding="UTF-8")
’r‘:读取模式;
w:写入模式;文件存在会将其清空再写,文件不存在则会自动创建新文件
a:追加模式;文件存在则会追加写入文件后,文件不存在则会创建新文件
r+:读取和写入;
注意读取时文件指针的影响
代码 | 作用 |
---|---|
f=open(“address”, ‘mode’,encoding=“UTF-8”) | 打开文件,encoding默认为UTF-8 |
文件.read(数字) | 读取指定数字的文件内容,存入一个字符串变量中 |
文件.readlines() | 按行读取整个文件内容,将内容存入一个列表中 |
文件.readline() | 调用一次读取一行内容,存入一个字符串变量中 |
文件.close() | 关闭文件,解除文件的占用,内置了flush方法 |
文件.write(内容) | 将内容写入文件 |
文件.flush() | 将缓冲区积攒的内容写入硬盘 |
for 循环读取文件行:
for line in open("test.txt",'r'):
print(line)
with open 语法操作结束后自动关闭文件
with open("test.txt",'r') as f:
print(f.read())
# 方法一
f = open(r"C:\Users\86157\Desktop\test.txt", 'r', encoding="UTF-8")
content = f.read()
count = content.count("你")
print(f"”你“在文件中出现了{count}次")
f.close()
# 方法二
count = 0
d = open(r"C:\Users\86157\Desktop\test.txt", 'r', encoding="UTF-8")
for line in d:
line = line.strip() # 去除开头和结尾的换行符与空格
for word in line:
print(word)
if word == "你":
count += 1
print(f"”你“在文件中出现了{count}次")
d.close()
2.写入txt文件
直接调用write,内容攒积在缓冲区,写入多行数据时,该函数不会自动添加换行符。
当调用flush时,内容才真正写入硬盘,能避免频繁写入硬盘,导致效率不高。
如果要将数值型数据写入文本文件,必须先用str()函数将数值转换成字符串格式
八、异常
1.捕获异常
# 1. 捕获常规异常
try:
# 可能发生错误的语句
except:
# 出现异常后的操作
# 2. 捕获所有异常
try:
# 可能发生错误的语句
except Exception as e:
# 出现异常后的操作
# 3. 捕获指定异常
try:
# 可能发生错误的语句
except (异常类型1,异常类型2,……) as e:
# 出现异常后的操作
else:
# 未出现异常后的操作,为可选操作
finally:
# 不论是否有异常都会执行的操作,比如文件的close,为可选操作
2.异常的传递
异常具有传递性,可在高级层捕获异常
【记录学习过程的笔记,欢迎大家一起讨论,会持续更新】