f = open(r‘a.txt‘,mode=‘rt‘,encoding=‘utf-8‘)
res = f = read()
print(res)
f.close()
ps : 当文件关闭之后, 那么对应的文件操作的方法都不起作了, 如果继续使用操作文件的功能就会报错
ps2 : 当 f.close( ) 之后, 这个 " f " 文件对象并没有回收, 回收的是操作系统打开的文件资源
f = open 占用了2部分的内存空间:
??open占用的是操作系统的的内存空间,由操作系统的映射到了应用程序的内存空间中 ".close()关闭的就是这个"
??"f"的值还是一种变量,而变量都是归属于python的内存空间,也就是说"f"占用的是应用程序的内存空间
with open(‘a.txt‘, "rt", encoding="utf-8") as f1:
res = f1.read()
print(res)
# 哈哈哈
# 哈哈哈
??没有指定"f.close()", "with"会等其子代码块群不运行后,会自动调用"f.close()"
??当你的一行代码过长,可以使用右斜杠" \ " 转意换行符 "\n"(相当于是一行)
with open(‘a.txt‘, "at", encoding="utf-8") as f1, open("a.txt", "rt", encoding="utf-8") as f2:
res = f1.write("呵呵呵\n")
res = f2.read()
print(res)
# 哈哈哈
# 哈哈哈
# 呵呵呵
t
, b
的关系t
模式,必须加上 encoding="[编码格式]"b
模式,不能加上 encoding="[编码格式]"r
: 只读 (默认)??‘r‘ :在文件存在的时候,文件指针调到文件开头,文件不存在直接报错
f=open("a.txt",mode="rt",encoding=‘utf-8‘)
res=f.read()
print(res)
f.close()
w
: 只写??‘w‘ :在文件存在的时候会清空文件,文件指针调到文件开头,文件不存在会创建空文档
f=open("c.txt",mode="wt",encoding=‘utf-8‘)
# f.write("cccc\n")
f.write("11111\n")
f.close()
a
: 只追加写??‘a‘ :在文件存在的时候不会清空文件,文件指针调到文件末尾,文件不存在会创建空文档
f=open("d.txt",mode="at",encoding=‘utf-8‘)
f.write("6666666\n")
f.write("11111\n")
f.close()
a
模式与 w
模式区别a
模式重新开打文件,只要打开文件,它的指针就会跳到末尾 (通常用来记录日志文件)w
模式重新打开文件,直接清空文件 (通常用来创建新文件)+
模式r+
: 默认 t 模式, 读模式并加了它所没有的功能(就是"写"功能)w+t
: 写模式, 加了它所没有的功能(就是"读"功能)a+t
: 追加写, 加了它所没有的功能(就是"读"功能)r+b
: b 模式, 读 + 写w+b
: b 模式, 写 + 读a+b
: b 模式, 追加写 + 读??".readline( )"
f=open(‘a.txt‘,mode=‘r‘,encoding=‘utf-8‘)
print(f.readline(),end=‘‘)
print(f.readline(),end=‘‘) #每次只打印一行
print(f.readline(),end=‘‘) #从上往下打印一行
f.close()
??".readlines( )" 输出的结果是一个列表
f=open(‘a.txt‘,mode=‘r‘,encoding=‘utf-8‘) #mode=‘rt‘
print(f.readlines()) #[‘111\n‘, ‘222\n‘, ‘333\n‘, ‘444‘]
f.close()
??循环从列表里面取出值写进去
f.writelines([‘111111\n‘,‘222222\n‘,‘333333\n‘])
f.write(‘aaaaaaaa\nbbbbbbb\nccccccc\n‘) #.write() 加转行符号效果相同
f.close()
with open(‘aaa.txt‘, mode=‘wt‘, encoding=‘utf-8‘) as f:
f.write(‘I am Shawn‘)
f.flush() # 立刻将文件内容从内存刷入硬盘
with open(‘aaa.txt‘, mode=‘wt‘, encoding=‘utf-8‘) as f:
print(f.readable()) # False
print(f.writable()) # True
print(f.encoding) # utf-8
print(f.name) # aaa.txt
print(f.closed) # False
ps : 如果没有指定encoding,默认使用操作系统的编码,在windsow中显示:CP936 (其实就是GBK)
原文:https://www.cnblogs.com/songhaixing/p/14052850.html