Python文件操作基础

本文介绍了Python中的文件操作,包括文本和二进制文件的打开模式,如读(r)、写(w)、追加(a)和二进制(b)模式。强调了文件指针的定位和移动,以及read、readline和readlines等读取方法的适用场景。此外,还讨论了文件的写入操作和关闭,以及os模块在文件管理中的作用,如重命名、删除和创建文件夹。最后,展示了如何复制文件,并提出了优化大文件复制的方法。
摘要由CSDN通过智能技术生成

Python文件操作基础

文件分类
  • 文件的分类
  1. 文本文件:doc,txt,等
  2. 二进制文件:图片,音频等
  • 文件的使用流程
  1. 打开
  1. open("文件“, ”模式“):打开文件可理解为给文件架设了一个管道,管道有单向或双向模式;
  2. 模式
  3. r:以只读方式打开文件(默认模式);文件指针将会放在文件开头;文件不存在时会报错;
  4. w:以只写的方式打开文件;文件指针放在文件开头;文件不存在会自动创建一个一个新文件;若文件存在,会将整个文件覆盖;
  5. a:以追加方式(只写)打开文件; 文件的指针将会放在文件结尾;文件不存在时会自动创建一个新文件;
  6. b:以二进制格式进行操作文件读写。操作图片、音频、视频等;
  7. +:代表以”读写模式“进行打开;部分覆盖;
  1. 读写
  1. 定位:

f.seek(偏移量,[0,1,2]),第二个参数:0,开头(默认);1,当前位置;2,文件末尾;
文本文件的操作模式下(不带b),第二个参数只能是0;如果第二个参数要写1和2,必须在二进制文件操作模式;
f.tell()查询文件指针位置

  1. 读:

f.read(字节数) #将文件内容全部加载到内容
字节数默认是文件内容长度;读完成后,指针下标自动后移
f.readline([limit]) 读取一行数据,limit限制的最大字节数
f.readlines()自动将文件按换行符进行处理,处理好的每一行组成一个列表返回 #将文件内容都会加载到内存
for in 遍历f本身,也可以遍历行列表

注意:一般文件特别大的时候,可以使用readline函数:按行加载,节省内存,但性能较低; readlines和read会一次读取文件所有内容到内存,处理效率较高。

import collections

f = open("a.txt","r")
print(isinstance(f, collections.Iterator) #判断f是否是迭代器,迭代器可以动态的去加载内容
if f.readable():
	content = f.readlines()
	for i in content:
		print(i, end="")
f.close()

  1. f.write(“内容”) 返回值是写入的字节长度
    判定是否可写 f.writeable()
    f.flush()函数会立即情况缓冲区数据内容到磁盘文件
  1. 关闭

f.close() 释放系统资源;立即清空缓冲区的数据内容到磁盘文件

文件的相关操作

  • 模块 import os
  • 操作
  1. 重命名
    可使用os.rename(src,dst)函数来修改文件或文件夹的名字
    os.renames(old,new)可按照树状结构修改文件或文件夹名字
  2. 删除
    删除文件os.remove('文件路径’)注:文件不存在会报错
    删除目录1)os.rmdir(path)该函数不能递归删除目录,如果文件夹非空则会报错;2)os.removedirs(path)可递归删除目录,如果文件夹非空会报错;
  3. 创建文件夹
    os.mkdir("文件夹名称“,[mode])注不能递归创建,mode与linux的权限类似:文件拥有者 同组用户 其他用户 的读写可执行,如os.mkdir(“Fiile”,0o777)
    os.listdir(‘./’) 列举当前一级目录,‘…/'当前目录的上级目录
  • 案例
  1. 文件的复制
  1. 只读模式,打开要复制的文件
    追加模式,打开副本文件
import os
os.chdir("目标路径“)
source_file = open("src.txt", "r",encoding="utf-8")  #注意文件的编码方式
dst_file = open("dst.txt", "a", encoding = "utf-8")
  1. 从源文件中读取内容,写入到目标文件中
content = source_file.read() #将源文件内容全部读到内存(超大文件怎么办?)
dst_file.write(content)

改进方案

while True:
  content = source_file.read(1024) #每次读1024个字节,指针自动后移
  if len(content)==0:
      dst_file.write(content)
  1. 关闭源文件和目标文件
source_file.close()
dst_file.close()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值