文件操作
Posted mr-wangxd
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文件操作相关的知识,希望对你有一定的参考价值。
文件操作 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项目代码练习等 est.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,默认将光标移动到文件末尾,换行需要自己手动加‘ ‘ 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 追加读写非文本文件 去除文件中读出的 用.strip() #read() 不写参数表示返回读全文内容 r模式下是按字符读取的。 rb模式是按照字节取的(一个英文占一个字节,一个中文占三个字节)大文件禁用,因为会读出所有内容 用for合理 #read(n) 读取n个字符,返回读取的内容,注意单位是字符 #readline() fd.readline() 一行一行读取,每调用一次读出一行,所有行读完了读出的都是空格s #readlines() fd.readlines() 将每一行作为列表的元素读出,想去除读出的 加 .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()等函数就要重新生成新的句柄再对文件操作