文件操作

1、打开文件

  f =  open(文件名,打开模式,encoding="utf-8")  =======>打开文件,  选择操作模式,以及打开的解码模式并赋值给f

f = open("wjm","r")   只读

f = open("wjm","w")   只写   没有就创建   有就 先清空原文件

f = open("wjm","x")       没有就创建     如果文件存在就报错,不存在就创建并可以写内容

f = open("wjm","a")   没有就创建    存在就写   追加文件内容

r+    可读写    用seek   可在任意位置写

w+   清空  再写

x+      可读  可写

a+   可读可写   但是写的永远在最后

########   f = open("wjm","ab")    操作模式加b之后 就是以字节类型读取

以常规utf-8读取

f = open("wjm","a")

f.write("虞智渊")

f.close()

以字节读取

f = open("wjm","ab")

f.write(bytes("虞智渊",encoding ="utf-8")

f.close()

#######

date = f.read(1)   读取第一个字符            如果没用加b  读取的时候是按字符去读取的

###########

f.seek(1)   主动把指针调整到指定的位置   并且写的话会覆盖后面的内容    

不管是中文还是什么,都是以一个字节为单位去读取,会把中文变成乱码

######  

f.tell()  当前指针所在的位置======》永远是以字节为单位去计算的

2、操作文件

通过源码查看功能

read()   无参数   读全部     ;有参数    1、有b 按字节         2、无b  按字符

tell()    获取当前指针位置    按字节操作

seek(22)   跳转到指定位置      按字节操作

write()    写数据   以覆盖的模式   打开有b   写字节 (可以自己转码去操作)   无b  写 字符

close()   关闭

fileno()    文件的描述符

flush()   强行刷新   中间刷新  不用等程序结束 就把写入的内容加进去

readable()   判断是否可读   返回的是bool值

readline()   仅读取一行   f.readline(3)   读取第三行

truncate()   截断数据    把前面的保留 后面的清空    truncate(3)  指针位置后面 ( 第几个字符)的清空

       迭代for 循环文件对象,  循环的是每一行

          f = oper()

            for line in f:

3、关闭文件

1#    f.close()

2#    with  oper(文件名)  as   f:         代码结束 会自动关闭文件

            pass

    with  open("wjm1",“r”,"utf-8") as f1, open("wjm2"“w”,"utf-8") as f2:       可以同时单开多个文件

         pass

这样的好处是可以对两个文件同时操作

将B文件的前十行 写入A文件

 with  open("wjm1",“r”,"utf-8") as f1, open("wjm2"“w”,"utf-8") as f2: 

  times = 0

  for line in f1:

    time+=1

    if times <=10:

      f2.write(line)

    else:

      break

将a文件中的ycj 替换成yuzy

with  open("wjm1",“r”,"utf-8") as f1,open("wjm2"“w”,"utf-8") as f2: 

         for line in f1:                  读取每一行

    rep_str=ling.replace("ycj","yuzy")      每一行操作 替换   

    f2.write(rep_str)       将替换后的写入新文件 

    f2.close()             关闭

原文地址:https://www.cnblogs.com/ychj/p/9460174.html