文件操作
https://www.cnblogs.com/c-x-m/p/7756498.html
操作文件三步 1 产生文件句柄 2 操作文件句柄 3关闭文件
文件是一个可跌代对象,在使用文件路径时尽量使用相对路径,不适用绝对路径
#with open() as:
使用with语法对文件进行读取,不用使用close()关闭。同时对多个文件操作,对file1读取,对file2覆盖写入
with open('file.txt', encoding='utf-8') as fd1, \
open('file2.txt', encoding='utf-8', mode='w') as fd2:
print(fd1.read())
fd2.write('qwe123')
fd = open(r"路径", enconding='编码', mode='模式') fd文件句柄
fd = open(r"E:\面授\python\项目代码练习等\test.txt", encoding='utf-8', mode='r')
content = fd.read()
print(contend)
fd.close()
mode(模式): r, w, a, r+, w+, a+, rb, wb, ab, r+b, w+b, a+b
r 只读模式,光标默认在文件首,使用read()
w 写模式,注意有w就会先将文件清空后再write()
a 追加 append,默认将光标移动到文件末尾,换行需要自己手动加'\n'
r+ 读写模式,先读 后写 注意不管读多少字符,只要读过后有‘+’就会将光标移到文件尾(常用的读写模式)
rb 读非文本文件,如图片等其他格式文件mode里如果有b. encoding就不能给了
wb 写非文本文件,如对图片等文件进行写操作mode里如果有b. encoding就不能给了
注意:带w的将会清空文件,带+的会操作过后光标会移动到文件末尾
rb, wb, ab, bytes如果处理的是非文本文件, mode里如果有b. encoding就不能给了
a+ 追加读写
ab 追加写
r+b 读写非文本文件
w+b 写读非文本文件
a+b 追加读写非文本文件
去除文件中读出的\n用.strip()
#read() 不写参数表示返回读全文内容 r模式下是按字符读取的。 rb模式是按照字节取的(一个英文占一个字节,一个中文占三个字节)大文件禁用,因为会读出所有内容 用for合理
#read(n) 读取n个字符,返回读取的内容,注意单位是字符
#readline() fd.readline() 一行一行读取,每调用一次读出一行,所有行读完了读出的都是空格s
#readlines() fd.readlines() 将每一行作为列表的元素读出,想去除读出的\n加 .strip()
#for循环 最好 在内存中只占一行 常用的遍历文件
fd = open('file.txt', encoding='utf-8', mode='r')
for i in fd:
print(i)
fd.close()
#fd.flush() 将缓存中的数据写入磁盘
#write(line) 将line的内容写入,如果没有文件自动创建,常与fd.flush(),将句柄中的缓存写入磁盘中,返回值是写入的字符长度。
fd = open('file.txt',encoding='utf-8', mode='w')
fd.write('hello')
#tell() 告诉指针的位置
fd = open('file.txt',encoding='utf-8', mode='w')
fd.write('hello')
print(fd.tell())
fd.close()
#seek(参数1,参数2) fd.seek(),移动光标位置单位是bity字节。当有换行时会被截断无返回值,seek的两个参数意义是,参数1:偏移量。参数二有三个值0表示文件开头, 1表示当前位置,2表示文件末尾。第二个参数默认为0。如seek(0)表示移动光标到文件开头,seek(0,2)移动光标到文件末尾。seek(2,1)相对当前位置向右偏移两个字节,seek(-1,2)光标移到文件倒数第一位
注意:当使用seek()函数后就报编码错误,可能是使用truncate()函数将字节算错。导致,重算节取字节即可
#truncate() 截取文件。fd.truncate()保留光标前内容,删除光标后面的内容。
#truncate(12) 保留12个字节bity,其余的内容删除。
文件权限mode不写默认为 读r
windows默认gbk编码 Linux默认utf-8编码格式 pycharmv
编码错误报错
改文件
文件修改只有两种方式: 1 通过中间变量存储,再重新刷进文件中
2 创建新文件后更改,再把文件改名
更改文件时的5个步骤。
1 打开源文件,产生文件句柄
2 创建新文件,产生文件句柄
3 读取源文件,进行修改写入新文件
4 将源文件删除
5 将新文件重命名
file3中的内容,要求将文中的所有“难”改为“易"
行路难 行路难
多歧路 今安在
长风破浪难有时
直挂云帆难沧海
#导入os模块
import os
with open('file3.txt', encoding='utf-8', mode='r') as fd,\
open('file3.bak', encoding='utf-8', mode='w')as fd2:
for oldfile in fd:
newfiel = oldfile.replace('难', '易')
fd2.write(newfiel)
os.remove('file3.txt')
os.rename('file3.bak', 'file3.txt')
注:文件改名后,不能再用改名前的文件句柄了,如果想使用read()等函数就要重新生成新的句柄再对文件操作