Python 的文件操作

目录

R(开始时,会把光标移动到文本开头)

W(开始时,会将文本内容清空)

A (开始时,会把光标移动到文本末尾)

其他操作,关于光标的部分操作:

 

open方法用来打开一个文件,并返回文件对象。。常用的两个参数:file 和 mode(模式)  

默认为文本模式,如果要以二进制模式打开,加上 b 。

mode:

x    写入模式,新建一个文件,如果文件存在就会出现错误

R(开始时,会把光标移动到文本开头)

r    只读方式打开文件,文件的指针通常会放在文件的开头,这是默认模式(必须加上 encoding 参数) 

     注意: read(4)   是读取四个字符

with open("文件名","r",encoding=“utf-8”) as f:
    print(f.read())   #读取全部
     print(f.read(4))   #读取前四个字符的内容
    print(f.readline())    #读取一行 ,不过自带‘\n(换行)’
    print(f.readlines())    #读取全部,并将其放在一个列表中。返回值类型是列表

rb  :不可以加上 encoding 参数

       注意: read(4)   是读取四个字节

with open("文件名","rb") as f:
    print(f.read())   #读取全部
     print(f.read(4))   #读取前四个字节的内容
    print(f.readline())    #读取一行 ,不过自带‘\n(换行)’
    print(f.readlines())    #读取全部,并将其放在一个列表中。返回值类型是列表

r+ : 可读可写。格式同r 

# 先写后读
with open("../day6/四大喜事.txt",mode="r+",encoding="utf-8") as f:
    f.write("我是仙女三")
    f.seek(0,0)
    print(f.read())

# 先读后写
with open("../day6/四大喜事.txt",mode="r+",encoding="utf-8") as f: 
    print(f.read())
    f.seek(0,0)
    f.write("我是仙女三")

 

 

W(开始时,会将文本内容清空)

w  打开一个文件用于写入,如果文件存在则打开文件,先清空内容再开始编辑,如果文件不存在,则创建新文件后写入。(必须加上 encoding 参数)

with open("文件名","w",encoding = "utf-8") as f:
    f.write("写入的内容")

wb: 不可以加上 encoding 参数,写入内容必须是字节码

with open("../day6/四大喜事.txt",mode="wb") as f:
    f.write("我是仙女三")

#报错:
TypeError: a bytes-like object is required, not 'str'

# 以下是正确的:
with open("../day6/四大喜事.txt",mode="wb") as f:
    f.write("我是仙女三".encode("gbk"))
with open("../day6/四大喜事.txt",mode="rb") as f:
    print(f.read().decode("gbk"))

w+:先写后读。格式同w.    先读后写不会报错。但是不会输出内容。所以无意义。。 

因为模式为w的 再打开文件之前第一步会把文件进行清空,在后再写。所以先读的话内容为空

with open("../day6/四大喜事.txt",mode="w+",encoding="utf-8") as f:
    f.write("我是仙女三")
    f.seek(0,0)
    print(f.read())

 

 

A (开始时,会把光标移动到文本末尾)

a   打开一个文件用于追加,如果文件存在则打开文件,文件指针通常在文本末尾,也就是说新文本会写在已有内容之后,如果文件不存在,创建文件后写入(必须加上 encoding 参数)

with open{("文件名",“a”,encoding = "utf-8") as f:
    f.write("写入的内容会追加到原来内容之后")

ab    不可以加上 encoding 参数,写入内容必须是字节码

with open("../day6/四大喜事.txt",mode="ab") as f:
    f.write("我是仙女三".encode("gbk"))
with open("../day6/四大喜事.txt", mode="rb") as f:
    print((f.read()).decode("gbk"))

a+ (想要读取全部内容,必须要把光标移动到文本头)

with open("../day6/四大喜事.txt",mode="a+",encoding="utf-8") as f:
    f.write("我是仙女三")
    f.seek(0,0)
    print(f.tell())
    print(f.read())

 

 

其他操作,关于光标的部分操作:

f = open("文件名称","r",encoding="utf-8")

f.tell()    返回光标当前位置

f.seek()   :      offset -- 开始的偏移量,也就是代表需要移动偏移的字节数    whence可选,默认值为 0。给offset参数一个定义,表                                      示要从哪个位置开始偏移;0代表从文件开头开始算起,1代表从当前位置开始算起,2代表从文件末尾算起

         f.seek(int num) : 将光标移动到 num的位置 (内容按字节去数)

        f.seek(0,0) : 将光标移动到 文本头

        f.seek(0,2) : 将光标移动到 文本末尾

f.seekable()  :   判断光标是不是可寻找的,返回布尔值

f.readable()  :  判断是否可读

f.writable() :    判断是否可写

f.truncate(  )   :

        参数为  num ,则将该位置的光标之后的内容全部删除

       参数为空,则该方法前必须将光标移动,然后再将该位置的光标之后的内容全部删除

f.flush() : 刷新,防止出现没有写入的文件内容

f.close() : 关闭操作,如果不是使用 with open  格式,则需要手动关闭文件。需要使用此方法  。 同JAVA的文件关闭

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值