一、读操作:只读模式r
'''
'a.txt'表示文件路径,‘r’表示读模式,不写默认为rt模式‘rtext’,
f为变量,open('a.txt', 'r')表示在操作系统上打开的文件,python解释器的回收功能会回收f,
但不能回收操作系统的文件,f.close()像操作系统发送关闭文件的指令,
windows默认用gbk的格式打开文件,encoding='utf-8'告诉操作系统用utf-8的格式打开文件。
'''
f = open('a.txt', 'r', encoding='utf-8')
data = f.read()
print(data)
f.close() # 文件关闭,回收操作系统资源
print(f)
# 因为此时程序还没有运行结束,所以print(f)还可以输出结果,
# 输出结果:<_io.TextIOWrapper name='a.txt' mode='r' encoding='utf-8'>
data1 = f.read()
print(data1)
'''
此时操作系统已关闭该文件,data1 = f.read()执行时会报错
data1 = f.read() 输出结果:
Traceback (most recent call last):
File "C:/Users/admin/PycharmProjects/pythonss/Day10/文件处理.py", line 8, in <module>
data1 = f.read()
ValueError: I/O operation on closed file.
'''
**************************分隔符***********************************
with open('a.txt', 'r', encoding='utf-8') as f1:
# 打开文件,并将文件的值赋值给f,最后会自动执行f.close()
data2 = f1.read()
print('data2:', data2)
'''
输出结果:
data2: aaa
bbb
hahah
哈哈哈
娃娃啊
'''
**************************分隔符***********************************
f = open('a.txt', 'r', encoding='utf-8')
data3 = f.read()
print('=====3=====', data3)
'''
输出结果:
=====3===== aaa
bbb
hahah
哈哈哈
娃娃啊
'''
data4 = f.read()
print('=====4=====', data4)
'''
输出结果:=====4===== ,
因为第一次读文件时,光标已经从文件的开头移动到文件的结尾,所以再次读文件时,读取结果为空
'''
**************************分隔符***********************************
f2 = open('a.txt', 'r', encoding='utf-8')
print(f2.readline()) # 输出结果:aaa
print(f2.readline(), end='') # 取消换行符
print(f2.readlines())
# 输出结果:['hahah\n', '哈哈哈\n', '娃娃啊'],
# read和readlinse一次性将文件读取到内存,所以仅限于文件很小的情况下使用。
**************************分隔符***********************************
二、写操作w: 只写模式,默认是wt文本写
f2 = open('b.txt', 'w', encoding='utf-8')
'''
文件没有时,w格式会新建一个文件;
文件存在时,w格式会重写已有的文件,将已有文件覆盖
'''
f2.write('1111\n') # 一行一行的编写文件
f2.write('2222\n')
f2.write('3333\n')
f2.writelines(['aaa\n', 'bbb\n', 'ccc\n']) # 直接编写整个文件
f.close()