错误解析:
f=open("aaa.txt","w",encoding="utf-8")
f.write("我在、、")
print(f.read())
f 是文件写模式下的,文件读取就会报错
修改:
f=open("aaa.txt","w",encoding="utf-8")
f.write("我在、、")
f.close()
f=open("aaa.txt","rt",encoding="utf-8")
print(f.read())
关闭文件后再以写模式下打开文件,即可;
注:
再打开文件的操作中,
文件打开方式如下:
打开模式 | 含义 |
---|---|
‘r’ | 只读模式 |
‘w’ | 覆盖写模式 |
‘x’ | 创建写模式,文件不存在不创建,异常FileExitError |
‘a’ | 追加写模式,文件不存在则创建 |
‘b’ | 二进制文件模式 |
‘t’ | 文本文件模式,默认 |
‘+’ | 与r/a/w/x一同使用,在原功能的基础上增加读写功能 |
读取文件的方式:
方式 | 含义 |
---|---|
readall() | 读取整个内容,返回一个字符串或字节流 |
read(size=-1) | 读取整个内容,如果给出参数,返回前size的字符串或字节流 |
readline(size=-1) | 从文件读取一行内容,如果给出参数,读入改行前size法人字符串或字节流 |
readlines(hint=-1) | 读取所有行,以每行元素形成一个列表,如果给出参数,读入hint行 |
写入文件的方式:
方法 | 含义 |
---|---|
write(s) | 向文件写入一个字符串或字节流 |
writelines(lines) | 将一个元素全为字符串的列表写入文件 |
seek(offset) | 改变当前指针的位置,offset:0-开头,1-当前,2-结尾 |
认识 + 的文件打开方式:
f=open("aaa.txt","a+",encoding="utf-8") #对追加写方式加上个“+”,也可以读了
f.write("aa")
print(f.read())
f.close()
运行后,发现写进去了,但没有读取到
原因:写后,指针位于最后,读取时不会读到任何值。
解决:添加seek函数
f=open("aaa.txt","a+",encoding="utf-8")
f.write("aa")
f.seek(0) #0-文件开头;1-文件当前位置;2-文件结尾
print(f.read())
f.close()
扩展:
在读取或写入文件后,容易忘记将文件关闭,我们在代码前添加with即可:
with open("aaa.txt","a+",encoding="utf-8") as f:
f.write("aa")
f.seek(0) #0-文件开头;1-文件当前位置;2-文件结尾
print(f.read())
注: 打开文件不能选择 f= 直接赋值,且采用 as f 时要在 f 后加 :
以上。