打开文件:
f=open('test.txt',mode='r',encoding='utf-8')
参数1 文件名,若非当前路径,需指出具体路径
参数2 mode: 文件打开模式
r 只读模式【默认模式,文件必须存在,不存在则抛出异常】,文件指针放在文件开头
w,只写模式【不可读;不存在则创建;存在则清空内容】
x, 只写模式【不可读;不存在则创建,存在则报错】
a, 追加模式【可读; 不存在则创建;存在则只追加内容】,文件指针自动移到文件尾
"+" 表示可以同时读写某个文件
r+, 读写【可读,可写】,文件指针放在文件开头,文件存在不清空,逐步覆盖旧内容
w+,写读【可读,可写】,消除文件内容,然后以读写方式打开文件。
x+ ,写读【可读,可写】
a+, 写读【可读,可写】,以读写方式打开文件,并把文件指针移到文件尾
"b"表示以字节的方式操作,以二进制模式打开文件,而不是以文本模式。
rb 或 r+b
wb 或 w+b
要是写入文本 x=f.write('物理教师'.encode('utf-8'))
xb 或 w+b
ab 或 a+b
注:以b方式打开时,读取到的内容是字节类型,写入时也需要提供字节类型,不能指定编码
读取文件:
s=f.read() 读取文件的全部内容
c=f.read(3) 从当前位置开始读取的最大字符数
如果是二进制 可能是字节数
readline() 每次读取文件的一行,包括回车换行符,自动移动指针
返回值是''表示文件尾
readlines() #读取文件的所有行,返回一个字符串列表
['我是中国人我的籍贯在浙江\n', '我是物理教师\n', '我喜欢学习python']
文件的关闭:
f.close()
文件的写入:
x=f.write('物理教师')
参数 要写入的内容
返回值 写入的字符数
自动移动指针
特别注意:是覆盖不是插入
返回的是写入的字符长度
f.writelines(['李明','李秀艳','李雪倩']) 写入一序列的字符串.这一序列字符串可以是由迭代对象产生的,如一个字符串列表。
换行需要制定换行符 \n。
f.flush() #清空缓存,把缓存的内容写入磁盘文件,自动移动文件指针
文件的定位-指针:
f.seek(0) 移动指针
参数1 偏移量,单位是字节,不是字符
参数2 可选,默认值为 0。表示要从哪个位置开始偏移;0代表从文件开头开始算起,1代表从当前位置开始算起,2代表从文件末尾算起
文本文件只能是0;二进制文件能1能2
c=f.tell() 返回指针当前的位置
文件遍历:
f=open('test.txt',mode='r+',encoding='utf-8') for s in f: #按行拆解 print(s,end='') f.close()
最佳处理格式
with open('d:/ss/test.txt',mode='r+',encoding='utf-8') as f:
f.read()
print(c)
自动关闭
f.truncate(2) 删除指定字节后面的内容
从文件的首位置开始
参数 要保留的字节数
没有返回值
c=f.readable() 判断文件是否可读
可读 返回true
我理解的是readable只要文件不是EOF 就是可读的只不过有可能读不出内容了
c=f.writable() 判断文件是否可写
f.name 返回文件的路径 d:/ss/test.txt
天子骄龙