Python从0到100(二十):文件读写和文件操作
一、文件的打开和关闭
有了文件系统可以非常方便的通过文件来读写数据;在Python中要实现文件操作是非常简单的。我们可以使用Python内置的open
函数来打开文件,在使用open
函数时,我们可以通过函数的参数指定文件名、操作模式和字符编码等信息,接下来就可以对文件进行读写操作了。这里所说的操作模式是指要打开什么样的文件(字符文件或二进制文件)以及做什么样的操作(读、写或追加),具体如下表所示。
操作模式 | 具体含义 |
---|---|
'r' | 读取 (默认) |
'w' | 写入(会先截断之前的内容) |
'x' | 写入,如果文件已经存在会产生异常 |
'a' | 追加,将内容写入到已有文件的末尾 |
'b' | 二进制模式 |
't' | 文本模式(默认) |
'+' | 更新(既可以读又可以写) |
1.文件的打开
使用Word编写一份简历的流程:
- 打开新建一个Word文件
- 写入个人简历信息
- 保存文件
- 关闭Word软件
操作文件的整体过程和word写简历的过程类似:
- 打开或新建立一个文件
- 读/写数据
- 关闭文件
在python中,使用 open方法
打开文件:
open(文件名,访问模式)
- “文件名”必须要填写
- “访问模式”是可选的
注意
:
如果使用open函数打开文件时,如果没有注明访问模式,则必须保证文件是存在的,否则会报异常。
Traceback (most recent call last):File "<input>", line 1, in <module>
FileNotFoundError: [Errno 2] No such file or directory: 'test.txt'
2.文件的模式
基本:
- r:默认模式,以只读方式打开文件
- w: 打开一个文件只用于写入
- a: 打开一个文件用于追加
- rb: 以二进制格式打开一个文件用于只读
- wb: 以二进制格式打开一个文件只用于写入
- ab: 以二进制格式打开一个文件用于追加
复杂:
- r+: 打开一个文件用于读写,文件指针会放在文件开头
- w+: 打开一个文件用于读写,如果已经存在则会覆盖
- a+: 打开一个文件用于读写,如果已经存在,则会放在末尾
- rb+:以二进制格式打开一个文件用于读写
- wb+: 以二进制格式打开一个文件用于读写。如存在则覆盖
- ab+: 以二进制格式打开一个文件用于追加
3.文件的关闭
凡是打开的文件,切记要使用close
方法关闭文件。
# 新建一个文件,文件名为:test.txt
f = open(itheima.txt', 'w')
# 关闭这个文件
f.close()
二、文件的读写
1.写文件
向文件写数据,需要使用 write()
方法来完成,在操作某个文件时,每调用一次write方法,写入的数据就会追加到文件末尾。
# 一万次悲伤,依然会有Dream,我一直在最温暖的地方等你!
# @Time : 2022/1/23 13:00
# @Author : 是Dream呀!
# @File : 文件写入.py
f = open('xyp.txt', 'w')
f.write('hello qiaoqiao, i am here!')
f.close()
如果没有此文件的话,会重新生成一个名为xyp.txt的文件:
打开此txt文件会有,我们写入的内容:
2.读文件
方式1:使用read方法读取文件
read(int)函数, 读取文件内容。如果指定读取长度,会按照长度去读取,不指定默认读取所有数据
# 一万次悲伤,依然会有Dream,我一直在最温暖的地方等你!
# @Time : 2022/1/23 13:05
# @Author : 是Dream呀!
# @File : 文件读.py
f = open('xyp.txt', 'r')
content = f.read(12)
print(content)
content = f.read()
print(content)
f.close()
# hello qiaoqi
# ao, i am here!
前面读过的,后面就不会再读了。
我们将原文件,再写入一行:
方式2:使用readlines方法读取文件
readlines()是按行输出列表,会把每一行的数据作为一个元素放在列表中返回,读取所有行的数据
f= open('xyp.txt', 'r')
content = f.readlines()
print(content)
----去掉括号和换行的方法----
f= open('xyp.txt', 'r')
content = f.readlines()
print(content)
for i in content:i = i.strip('\n')print(i)
方式3:使用readline方法一行一行读数据
readline()是读取一行,遇到换行结束
f = open('xyp.txt', 'r')
content = f.readline()
print("1:%s"%content)
content = f.readline()
print("2:%s"%content)
f.close()
3.文件的定位读写
方式1:使用tell方法来获取文件当前的读写位置
f = open("xyp.txt", "r")
str = f.read(4)
print('读取的数据是 : ', str)
position = f.tell()
print("当前文件位置 : ", position)
# 读取的数据是 : hell
# 当前文件位置 : 4
tell()
方法返回文件的当前位置,即文件指针当前位置
。
方式2:使用seek方法来移动文件读取指针到指定位置
seek(offset, from)方法包含两个参数:
- offset:表示偏移量,也就是代表需要移动偏移的字节数
- from:表示方向,可以指定从哪个位置开始偏移
- 0:表示文件开头(默认值)
- 1:表示当前位置
- 2:表示文件末尾
三、文件的重命名和删除
1.文件的重命名
os模块中的rename()方法可以完成文件的重命名。
格式如下:
os.rename(需要修改的文件名, 新的文件名)
2.文件的删除
os模块中的remove()方法可以完成文件的删除操作。
格式如下:
os.remove(待删除的文件名)
在这里插入图片描述
四、文件的相关操作
1.创建文件夹
os模块的mkdir方法用来创建文件夹,示例如下:
import os
os.mkdir("张三")
2.获取当前目录
os模块的getcwd方法用来获取当前的目录,示例如下:
import os
os.getcwd()
3.改变默认目录
os模块的chdir方法用来改变默认目录,示例如下:
import os
path = "Python文件操作"
# 查看当前工作目录
retval = os.getcwd()
print("当前工作目录为 %s" % retval)
# 修改当前工作目录
os.chdir(path)
# 查看修改后的工作目录
retval = os.getcwd()
print("目录修改成功 %s" % retval)
4. 获取目录列表
os模块的listdir方法用于获取目录列表,示例如下:
import os
os.listdir (”./”)
5. 删除文件夹
os模块的rmdir方法用于删除文件夹,示例如下:
import os
os.rmdir ('张三')
好书推荐
数据预处理是数据可视化、数据分析和机器学习的第一步,它将为分析和预测模型准备数据以帮助分析师获得最佳见解。分析师在执行数据分析、数据可视化和机器学习项目时,大约90%的时间都花在数据预处理上。
本书将从多个角度为读者提供最佳的数据预处理技术。读者将了解数据预处理的不同技术和分析过程(包括数据收集、数据清洗、数据集成、数据归约和数据转换等),并掌握如何使用开源Python编程环境来实现它们。
京东: 购买链接传送门
《Python数据预处理》详细阐述了与Python数据预处理相关的基本解决方案,主要包括NumPy和Pandas简介、Matplotlib简介、数据、数据库、数据可视化、预测、分类、聚类分析、数据清洗、数据融合与数据集成、数据归约、数据转换等内容。此外,本书还提供了相应的示例、代码,以帮助读者进一步理解相关方案的实现过程。
本书适合作为高等院校计算机及相关专业的教材和教学参考书,也可作为相关开发人员的自学用书和参考手册。
相关文章:

Python从0到100(二十):文件读写和文件操作
一、文件的打开和关闭 有了文件系统可以非常方便的通过文件来读写数据;在Python中要实现文件操作是非常简单的。我们可以使用Python内置的open函数来打开文件,在使用open函数时,我们可以通过函数的参数指定文件名、操作模式和字符编码等信息…...

AI+客服行业落地应用
一、客服行业变迁 1.传统客服时代 (1)客服工作重复性高,技术含量低 (2)呼出效率低,客服水平参差不齐 (3)管理难度高,情绪不稳定 (4)服务质量…...

40 生产者消费者模型
生产者消费者模型 概念 为何要使用生产者消费者模型,这个是用过一个容器解决生产者和消费的强耦合问题。生产者和消费者之间不需要通讯,通过阻塞队列通讯,所以生产者生产完数据之后不用等待消费者处理,直接扔给阻塞队列…...

QT5之windowswidget_菜单栏+工具栏_核心控件_浮动窗口_模态对话框_标准对话框/文本对话框
菜单栏工具栏 新建工程基类是QMainWindow 1、 2、 3、 点.pro文件,添加配置 因为之后用到lambda; 在.pro文件添加配置c11 CONFIG c11 #不能加分号 添加头文件 #include <QMenuBar>//菜单栏的头文件 主窗口代码mainwindow.cpp文件 #include &q…...
Satellite, Aerial, and Underwater Communication Track(WCSP2023)
1.Dispersion Curve Extraction and Source Localization for Single Hydrophone by Combining Image Skeleton Extraction with Advanced Time-Frequency Analysis(图像骨架提取与先进时频分析相结合的单水听器色散曲线提取和源定位) 摘要:时频分析(TF…...

AtCoder Regular Contest 176(ARC176)A、B
题目:AtCoder Regular Contest 176 - tasks 官方题解:AtCoder Regular Contest 176 - editorial 参考:atcoder regular 176 (ARC176) A、B题解 A - 01 Matrix Again 题意 给一个nn的方格,给出m个坐标(x,y)m,在方格中…...

VTK —— 二、教程六 - 为模型加入3D微件(按下i键隐藏或显示)(附完整源码)
代码效果 本代码编译运行均在如下链接文章生成的库执行成功,若无VTK库则请先参考如下链接编译vtk源码: VTK —— 一、Windows10下编译VTK源码,并用Vs2017代码测试(附编译流程、附编译好的库、vtk测试源码) 教程描述 本…...
一种基于图搜索的全局/局部路径避障策略
系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录 系列文章目录前言一种基于图搜索的全局/局部路径避障策略前言 认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长! 本文先对一种基于图搜索…...

LT2611UX四端口 LVDS转 HDMI2.0,带音频
描述LT2611UX 是一款面向机顶盒、DVD 应用的高性能 LVDS 至 HDMI2.0 转换器。LVDS输入可配置为单端口、双端口或四端口,具有1个高速时钟通道和3~4个高速数据通道,工作速率最高为1.2Gbps/通道,可支持高达19.2Gbps的总带宽。LT2611UX 支持灵活的…...

TypeError报错处理
哈喽,大家好,我是木头左! 一、Python中的TypeError简介 这个错误通常表示在方法调用时,参数类型不正确,或者在对字符串进行格式化操作时,提供的变量与预期不符。 二、错误的源头:字符串格式化…...

PHP的数组练习实验
实 验 目 的 掌握索引和关联数组,以及下标和元素概念; 掌握数组创建、初始化,以及元素添加、删除、修改操作; 掌握foreach作用、语法、执行过程和使用; 能应用数组输出表格和数据。 任务1:使用一维索引数…...

P3743 小鸟的设备
原题链接:小鸟的设备 - 洛谷 目录 1. 题目描述 2. 思路分析 3. 代码实现 1. 题目描述 2. 思路分析 浮点数二分答案。 首先特判,如果接通设备每秒生成的能量p大于等于所有设备每秒消耗的能量(a[1]a[2]..a[n])直接输出-1&…...

数字旅游以科技创新为动力:推动旅游服务的智能化、网络化和个性化发展,满足游客日益增长的多元化、个性化需求
目录 一、引言 二、科技创新推动旅游服务智能化发展 1、智能化技术的引入与应用 2、智能化提升旅游服务效率与质量 三、科技创新推动旅游服务网络化发展 1、网络化平台的构建与运营 2、网络化拓宽旅游服务渠道与范围 四、科技创新推动旅游服务个性化发展 1、个性化需求…...
64位的IP地址设想
现有的IP地址 IPv4有32位,不够用了。 IPv6有128位,相当多。 实际上,23385亿,只要在IPv4的基础上,加1比特就够用了,IPv6有些太长了。 64位的IP地址 这是个设想。 64位分成七段,8888881664&…...

1.python爬虫爬取视频网站的视频可下载的源url
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、爬取的源网站二、实现代码总结 一、爬取的源网站 http://www.lzizy9.com/ 在这里以电影片栏下的动作片为例来爬取。 可以看到视频有多页,因此需要…...

Linux目录结构
目录结构必背 !!!!(在生产环境中必须知道自己在哪个目录下)...

电脑问题2【彻底删除CompatTelRunner】
彻底删除CompatTelRunner 电脑偶尔会运行CompatTelRunner造成CPU占用的资源非常大,所以这里要想办法彻底关闭他 本文摘录于:https://mwell.tech/archives/539只是做学习备份之用,绝无抄袭之意,有疑惑请联系本人! 解决办法是进入W…...

【算法】【贪心算法】【leetcode】870. 优势洗牌
题目地址:https://leetcode.cn/problems/advantage-shuffle/description/ 题目描述: 给定两个长度相等的数组 nums1 和 nums2,nums1 相对于 nums2 的优势可以用满足 nums1[i] > nums2[i] 的索引 i 的数目来描述。 返回 nums1 的任意排列&…...

Unity AVProVideo安卓播放视频问题
打包ARM64,插件里arm64里的几个库都设置arm64,平台选择安卓 Unity VideoPlayer使用url方式,Android平台下无法播放http链接的视频 主要原因:默认情况下,不允许从Android 8开始使用不安全的HTTP,并且必须使用HTTPS,除非分配了自定义的明文安全策略 解决办法: 只需要修…...
Redis使用手册之字符串
《Redis使用手册字符串设置》 目录 **《Redis使用手册字符串设置》**** SET:为字符串键设置值**** GETSET:获取旧值并设置新值**** MSET:一次为多个字符串键设置值**MGET:一次获取多个字符串键的值**** MSETNX:只在键不…...

【Python】 -- 趣味代码 - 小恐龙游戏
文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...
Spring Boot 实现流式响应(兼容 2.7.x)
在实际开发中,我们可能会遇到一些流式数据处理的场景,比如接收来自上游接口的 Server-Sent Events(SSE) 或 流式 JSON 内容,并将其原样中转给前端页面或客户端。这种情况下,传统的 RestTemplate 缓存机制会…...

大型活动交通拥堵治理的视觉算法应用
大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动(如演唱会、马拉松赛事、高考中考等)期间,城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例,暖城商圈曾因观众集中离场导致周边…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...
《Playwright:微软的自动化测试工具详解》
Playwright 简介:声明内容来自网络,将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具,支持 Chrome、Firefox、Safari 等主流浏览器,提供多语言 API(Python、JavaScript、Java、.NET)。它的特点包括&a…...

CentOS下的分布式内存计算Spark环境部署
一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...
系统设计 --- MongoDB亿级数据查询优化策略
系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log,共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题,不能使用ELK只能使用…...

ServerTrust 并非唯一
NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...
sqlserver 根据指定字符 解析拼接字符串
DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...

【Java_EE】Spring MVC
目录 Spring Web MVC 编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 编辑参数重命名 RequestParam 编辑编辑传递集合 RequestParam 传递JSON数据 编辑RequestBody …...