可操作的文件:
.txt及没有后缀名的文件
操作文件的方式(三步法):
1. 打开文件(open)
2. 读或者写
3. 关闭文件
打开文件的方式:open('要操作的文件路径', '读写模式', '字符编码') open('要操作的文件路径', '读写模式', '字符编码')
f= open(r'D:\Python27\day10\a.txt', 'r', encoding='utf-8')
print(f)
print(f.read())
f.close()
文件的路径分为绝对路径和相对路径,当路径中出现了字母和斜杠的组合会产生一些特殊的含义,所以我们应该给去掉。
第二种方式操作文件的方式,如
with open('a.txt', 'r', encoding='utf-8') as f:
f.close()
print(f.read())
其中 with是上下文管理器,用来打开文件;as是用来起别名的,这种方式的特点能自动关闭文件。
读写模式:
r(只读:只能读不能写)
w(只写:只能写,不能读)
a(append:在原来的基础之上在添加新的内容)
读模式:
方式一:
f = open('a.txt', 'r', encoding='utf-8')
print(f.read())
f.close()
方式二:
with open('a.txt', 'r', encoding='utf-8') as f:
print(f.read())
特征:
当文件路径不存在的时候,会直接保存
写模式:
with open('b.txt', 'w', encoding='utf-8') as f:
f.write('hello')
特征:
1. 当文件路径不存在的时候, 会新建出来一个文件,而不报错
2. 写模式会把原来的数据覆盖掉,从新写入新的数据
追加模式:
with open('c.txt', 'a', encoding='utf-8') as f:
f.write('hello world')
f.write('hello world1')
f.write('hello world2')
f.write('hello world3')
f.write('hello world4')
f.write('hello world5')
特征:
路径不存在的时候,也会新建出来文件,它是追加写,而不是覆盖原来的内容
读系列
with open('a.txt', 'r', encoding='utf-8') as f:
print(f.read())
print(f.readline())
print(f.readline())
print(f.readlines())
print(f.readable())
写系列
with open('a.txt', 'w', encoding='utf-8') as f:
f.write('jerry say hello ')
f.writelines(['hello\n', 'jerry\n', 'kevin\n', 'jason\n'])
print(f.writable())
print(f.readable())
一次性读取所有数据:
with open('a.txt', 'r', encoding='utf-8') as f:
print(f.read())
一次性读取数据存在的问题:
当数据比较多的时候,会出现内存溢出
优化方式:
一点一点的读取数据然后把数据赶紧刷到硬盘里
代码如下:
with open('a.txt', 'r', encoding='utf-8') as f:
for line in f:
print(line)
f.flush()
文本模式:
with open('userinfo.txt', 'r', encoding='utf-8') as f:
文本模式默认就是操作字符串,文本
特征:
1. encoding参数必须指定
2. 读取的所有的数据都是以字符串为单位的
3. t模式只能够读取文本或者字符模式
二进制模式:
b模式:binary
with open('userinfo.txt', 'rb') as f:
b模式中得b不能省略------------> rb wb ab
特征:
1. encoding='utf-8'参数不能够指定
2. 读取的数据全部以字节为单位
3. 二进制模式可以读取任意类型的文件