Python基础_09:文件操作
文章目录
- 文件概念和作用
- 文件类型
- 文件操作流程
- 文件读取方式
- 文件写入方式
- Tips:
- 文件其他方法
- 文件复制
- 补充部分
- 文件指针
- f.seek()应用
- 修改文件的两种方式:
文件概念和作用
什么是文件?文件就是操作系统提供给用户/应用程序操作硬盘的一种虚拟的概念/接口
- 计算机中的文件,就是存储在某种长期存储设备上的一段数据
- 长期存储的设备包括:硬盘、U盘、移动硬盘、光盘等
- 将数据长期保存下来,在需要的时候使用
- 在计算机中,文件是以二进制方式保存的
文件类型
- 文本文件:可以使用文本编辑器查看,本质上还是二进制文件
- 二进制文件:不能使用文本编辑器查看,需要使用对应解释器查看(图片、音频、视频)
为何要用文件?用户/应用程序可以通过文件将数据永久保存到硬盘中,即操作文件就是操作硬盘。直接操作的是文件,对文件进行的所有操作,都是在向系统发送系统调用,然后再由操作将其转换成具体的硬盘操作
文件操作流程
- 打开文件:open
- 读取文件:read
- 写入文件:write
- 关闭文件:close
open(file, mode='r', buffering = -1, encoding=None, errors=None, newline=None,closefd=True, opener=None)
参数 | 参数说明 |
---|---|
file | 必需,文件路径(相对或者绝对路径) |
mode | 可选,文件打开模式 |
encoding | 一般使用utf-8 |
buffering | 设置缓冲 |
errors | 报错级别 |
newline | 区分换行符 |
closefd | 传入的file参数类型 |
文件读取方式
read([size])
- read([size]):传递参数,读取指定的字节数;如果未给定或为负则读取所有;返回为字符串
- 文件指针会移动到文件内容的末尾,执行之后不会再读取到文件内容
- 适用于文件内容较少
readline([size])
- readline():每次执行会读取一行内容,包含“\n"字符串;返回为字符串内容
- 读取完后指针会移动到文件末尾
- 指定参数,则返回指定大小的字节数
- 可与循环结合使用
file = open("readme.txt", encoding="utf-8")
while True:text = file.readline() # 无限循环读取,条件为真时
# 判断是否读取到内容if not text:break # 如果没有读取到内容,就停止print(text)
file.close()
readlines([sizeint])
- reaslines([sizeint]):读取文件所有行,并返回为列表
- 若给定sizeint>0,返回总和大约为sizeint字节的行, 实际读取值可能比 sizeint 较大, 因为需要填充缓冲区。
文件读取格式(可以自动关闭)
with open(file='fath_path', mode='r', encoding='utf-8') as f:data = f.read() # 返回整个文件数据,如果文件较大,不建议用这种方法data1 = f.readline() # 返回一行数据data2 = f.readlines() # 以列表格式,返回整个文件数据
实例
# f = open('myfiles.txt', 'r', encoding='utf-8')
# data = f.read()
# print(data)
# f.close()with open('myfiles.txt', 'r', encoding='utf-8') as f:data = f.read()print(data)
文件写入方式
file.write(str)
- 将字符串写入文件,返回的是写入字符串的长度
file.writelines(sequnence)
- 向文件写入一个序列字符串列表,如果需要换行,则需要加入换行符
文件写入格式
with open(file = 'file_path', mode = 'w', encoding = 'utf-8') as f:file.write(str) # 将字符串写入文件file.writelines(sequence) # 向文件写入一个序列字符串列表,如果需要换行则自己要加入换行符
mode常用参数
mode参数 | 参数说明 |
---|---|
r | 以只读方式打开(默认) |
w | 以只写方式打开,如果文件存在会覆盖文件已有的内容,如果文件不存在会自动创建 |
a | 追加的方式打开文件,追加的内容会写入文件末尾 |
r+ | 读写方式打开文件,文件指针会放在开头,文件不存在,抛出异常 |
w+ | 读写方式打开文件,如果文件存在会被覆盖。文件不存在创建新文件 |
a+ | 读写方式打开文件,文件已存在,文件指针会放在文件末尾,如果文件不存在,创建文件写入内容 |
b | 二进制模式,比如rb、wb、ab;以bytes类型操作数据 |
频繁的移动文件指针,会影响文件的读写效率,因此在实际开发中通常会以只读、只写方式操作文件
Tips:
- print后面带 end=’’,表示不换行
- 换行写入方式:file.write(’\n’ + “假如我年少有为不自卑,懂得什么是珍贵,那些美梦,没给你我一生有愧!”)
- \t:制表符,\n换行符(windows的换行是\r\n,unix的是\n,mac的是\r),\r回车
文件其他方法
方法 | 描述 |
---|---|
file.flush() | 刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件,而不是被动的等待输出缓冲区写入 |
file.fileno() | 返回文件一个整型的文件描述符(file descriptor FD 整型), 可以用在如os模块的read方法等一些底层操作上。 |
file.isatty() | 果文件连接到一个终端设备返回 True,否则返回 False。 |
file.seek(offset[, whence]) | 移动文件读取指针到指定位置 |
file.tell() | 返回文件当前位置。 |
file.truncate([size]) | 从文件的首行首字符开始截断,截断文件为 size 个字符,无 size 表示从当前位置截断;截断之后后面的所有字符被删除,其中 windows 系统下的换行代表2个字符大小。 |
文件复制
小文件复制
- 首先以只读方式打开源文件,然后以只写方式打开目标文件
- 读取源文件内容
- 将源文件内容写入目标文件
- 关闭源文件和目标文件
"""
# 读取文件
with open("axian.jpg", "rb") as file_pic:data = file_pic.read()pass# 写入文件
with open("axian_copy.jpg", "wb") as file_copy:result = file_copy.write(data)
"""# 合并写法
with open("axian.jpg", "rb") as file_pic, open("axian_copy.jpg", "wb") as file_copy:data = file_pic.read()file_copy.write(data)
大文件复制
- 使用readline一行一行进行复制
补充部分
mode =“x”:只写模式,不可读,文件存在就报错,不存在则创建
with open("test.txt", mode="x", encoding="utf-8") as f:f.write("测试")
文件指针
指针移动的单位都是以bytes字节为单位
特殊情况:t(文本-默认)模式下的read(n),n代表的是字符个数
f.seek(n, 模式):n是指移动的字节个数,模式是指指针参照位置
- 0:参照物是文件开头位置(可以在t模式下使用)
- 1:参照物是当前指针位置
- 2:参照物是文件末尾位置(一般用于反向移动,n则为负数)
f.tell():获取文件指针当前的位置
f.seek()应用
- 创建文件test_03_wite_file.py
# 写入日志
with open("access.log", mode="a+", encoding="utf-8") as f:f.write("记录日志=======")
- 创建文件test_04_file_seek.py(实现监控日志)
import time# 应用f.seek()监控日志
with open("access.log", mode="rb") as f:f.seek(0, 2) # 将指针跳到文件末尾while True:line = f.readline()if len(line) == 0:time.sleep(0.3)else:print(line.decode("utf-8"), end=" ")
修改文件的两种方式:
# 修改文件的两种方式:1,全部读取,然后修改并写入;1,逐行读取产生新文件,删除旧文件
# 方式1:会耗内存(文本编辑器方式)
with open('test.txt', mode='rt', encoding='utf-8') as f:data = f.read().replace('python', 'java')with open('test.txt', mode='wt', encoding='utf-8') as f1:f1.write(data)# 方式2:会在硬盘有两份文件(应用程序)
import oswith open('test.txt', mode='rt', encoding='utf-8') as f, \open('test1.txt', mode='wt', encoding='utf-8') as f1:for line in f:f1.write(line.replace('java', 'python'))
os.remove('test.txt')
os.rename('test1.txt', 'test.txt')
Python基础_09:文件操作相关推荐
- python基础之文件操作,集合,函数
文件操作: 打开文件的方法: 第一种:打开文件执行完命令后,需要关闭文件,否则会一直占用内存空间 f=open('/data/1.txt','r+') #后面的r+ 表示打开文件的模式是读写 # ...
- python基础之文件操作 内置模块(13)
文件操作: 打开文件,读写文件,操作文件内容 写入文件操作:(把大象装进冰箱) 1.打开文件 open() #1.打开冰箱门 2.向文件中添加内容 write() #2.把大象塞进去 3.关闭文件 c ...
- python文件替换一行_python基础_文件操作实现全文或单行替换的方法
这篇文章主要介绍了关于python基础_文件操作实现全文或单行替换的方法,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 python修改文件时,使用w模式会将原本的文件清空/覆盖.可以 ...
- [Python从零到壹] 三.语法基础之文件操作、CSV文件读写及面向对象
欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...
- python中最基础的文件操作,你都懂吗?
今天讲一下python中的文件操作,虽然在开发中我们很少操作文件,大部分的需求基本上是在数据库中完成,因为数据库的数据更安全,操作效率高,操作文件就面临着我们需要自己管理文件,但是我们平常测试或者做一 ...
- python怎么读取文件-python怎么读写文件操作
本节内容:I/O操作概述 文件读写实现原理与操作步骤 文件打开模式 Python文件操作步骤示例 Python文件读取相关方法 文件读写与字符编码 一.I/O操作概述 I/O在计算机中是指Input/ ...
- 第六篇:python基础之文件处理
第六篇:python基础之文件处理 阅读目录 一.文件处理流程 二.基本操作 2.1 文件操作基本流程初探 2.2 文件编码 2.3 文件打开模式 2.4 文件内置函数flush 2.5 文件内光标移 ...
- python怎么读写文件-python怎么读写文件操作
本节内容:I/O操作概述 文件读写实现原理与操作步骤 文件打开模式 Python文件操作步骤示例 Python文件读取相关方法 文件读写与字符编码 一.I/O操作概述 I/O在计算机中是指Input/ ...
- python 对 yaml 文件操作
python 对 yaml 文件操作 #!/usr/bin/env python # -*- encoding: utf-8 -*- """ @Introduce : p ...
- Python实现tab文件操作
Python实现tab文件操作 # -*- coding:gbk -*- import os class TABFILE: def __init__(self, filename, dest_ ...
最新文章
- 计算机考研379分能进复试吗,考研423分复试被刷,因低级错误错失985大学,这种教训非常深刻...
- 1分钟读懂直播和音视频通话的区别
- google怎么做(2.相似网页算法)
- 台式电脑键盘字母乱了_电脑键盘上的一个不起眼的按键,特别实用却被粗心的人忽略...
- ASP.NET工作笔记之一:图片上传预览及无刷新上传
- 注册、登陆、审核练习
- shell 命令 --ps aux | grep
- 你还在用HTTP吗?HTTP/3都来了。。。
- FPGA浮点数定点数的处理
- c32语言,c32rtomb转换为什么编码?
- Java 分布式框架面试题合集
- 航空摄影与正射摄影的区别
- linux top命令看到的实存(RES)与虚存(VIRT)分析
- day030进程的两种创建方法,验证进程的空间隔离,join等待子进程
- 苹果和虫子c语言编程题,虫子吃苹果:每天10分钟,锻炼少儿编程计算思维
- ProFTPD对接LDAP
- Steam Deck——硬盘,网络,模拟器一命通关教程
- matlab 坐标轴居中,MATLAB 把坐标轴(X Y轴)移到坐标原点
- 脚注交叉引用序号不一样_不为人知的Word交叉引用设置
- nnunet入门之一 (CT图像分割)
热门文章
- 导航组件—Android应用中使用ViewPager2创建滑动视图
- 数字信号处理翻转课堂笔记4
- 直接扫描到win10系统的计算机,win10系统安装扫描仪提示“启用windows 服务之前,无法将此设备用于计算机”的详细技巧...
- 关于调查问卷统计分析的见解
- Oracle数据文件scn不一致,控制文件与数据文件头SCN不一致导致数据库无法启动故障处理...
- Lync 地址簿同步知识点
- IMX6Q camera 驱动总结( 1 )
- linux系统下centos7 或 openwrt安装 使用 SpeedTest 测速
- python udp 丢包_TFTP 使用不关心丢包的 UDP 传输,它是怎么保证数据的完整性的?...
- 60.实现elementUI表格点击某一行选中勾选框