文件操作

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()等函数就要重新生成新的句柄再对文件操作

 

以上是关于文件操作的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段15——git命令操作一个完整流程

VSCode 如何操作用户自定义代码片段(快捷键)

代码片段 - Golang 实现集合操作

Apollo Codegen 没有找到生成代码的操作或片段

VSCode自定义代码片段——.vue文件的模板

操作栏标签片段中的片段?