Python-文件处理

什么是文件?

文件是操作系统为用户提供的一个虚拟单位

打开文件的步骤

  1. 打开文件
  2. 读取/写入
  3. 关闭文件
文件对象 open(打开) 文件名 	打开模式 	打开文件的字符编码
f     = open(    "filename", "rt", encoding="utf8")
data = f.read()
print(data)
f.flush()	# 保存文件
f.close()	# 关闭文件

文件分类

  • txt文件,文本文件
  • 二进制文件,图片/视频/音频文件

文件的三种打开模式

模式 描述
r 只读
w 可写,清空后写入
a 追加

文件的两种打开方式

方式 描述
t txt文本文件
b bytes 二进制文件/音频/图片/视频

使用方式

模式 描述
rt 以只读模式打开文本文件
wt 可写模式 ,清空文件后写入
at 可写模式,追加文本内容
rb 以只读模式打开二进制文件
wb 可写模式 ,清空文件后写入
ab 可写模式,追加文本内容

with 管理上下文

with open("filename","r",encondig="utf8") as f:
    print(f.read())

with open()方法不仅提供自动释放操作系统占用的方法,并且with open可以使用逗号分隔,一次性打开多个文件,实现文件的快速拷贝。

绝对路径和相对路径

  • 绝对路径

    从盘符开始写一个完整的路径

  • 相对路径

    相对于当前执行文件所在的文件夹的文件。

文件高级应用(了解)

模式 描述
r+ 可读可写
w+ 可读可写
a+ 可读可写

不能建议同时使用可读可写的模式进行对文件的操作

文件内指针移动

一个字符 表示3个字节

一个英文字母表示1个字节

打开文件模式要用二进制模式(b)

file = "36r.txt"

# 文件内容如下
真帅qinyj 真帅
  • seek

    两个参数,代表文件指针的偏移量,偏移量的单位是字节个数

with open(file,"rb") as fr:
    fr.seek(3,0)			# 控制指针到3字节后面开始读后面的内容
    print(fr.read().decode("utf8"))	# 帅qinyj 真帅
  • tell

    统计 从文件开头到当前的指针所在位置

with open(file,"rb") as fr:
    # fr.seek(3,0)
    print(fr.read().decode("utf8"))
    print(fr.tell()) # 告诉当前文件的指针在哪里,上一条代码已经读完所有的字符,所以是在文件末尾
    
真帅qinyj 真帅
18
  • truncate(n)

    截断文件

with open(file,"ab") as fr:
    fr.truncate(3)	# 截断几个字节之后的所有字符

真

文件修改

思路:

​ 打开两个文件;

​ 读第一个文件内容;

​ 将读到的内容写入第二个文件中;

​ 删除第一个文件;

​ 将第二个文件重命名为第一个文件的名字。

import os
with open("36r.txt","r",encoding="utf8") as fr,\
    open("36r.txt.swap","a",encoding="utf8") as fw:
    data = fr.read()
    data = data.replace("真","真好真好qinyj")
    fw.write(data)
    fw.flush()
os.remove("36r.txt")
os.rename("36r.txt.swap","36r.txt")
print("done....")
import os
file = "36r.txt"
with open(file,"r",encoding="utf8") as fr,\
    open(file + ".swap","w",encoding="utf8") as fw:
    for i in fr:
        i = i.replace("你分变更六","dsfsfsdfsdggggggggggggggggggggggggggggggg")
        fw.write(i)

os.remove(file)
os.rename(file + ".swap",file)
posted @ 2019-09-18 18:37  GeminiMp  阅读(153)  评论(0编辑  收藏  举报