Python从0到100(二十):文件读写和文件操作

在这里插入图片描述

一、文件的打开和关闭

有了文件系统可以非常方便的通过文件来读写数据;在Python中要实现文件操作是非常简单的。我们可以使用Python内置的open函数来打开文件,在使用open函数时,我们可以通过函数的参数指定文件名操作模式字符编码等信息,接下来就可以对文件进行读写操作了。这里所说的操作模式是指要打开什么样的文件(字符文件或二进制文件)以及做什么样的操作(读、写或追加),具体如下表所示。

操作模式具体含义
'r'读取 (默认)
'w'写入(会先截断之前的内容)
'x'写入,如果文件已经存在会产生异常
'a'追加,将内容写入到已有文件的末尾
'b'二进制模式
't'文本模式(默认)
'+'更新(既可以读又可以写)

1.文件的打开

使用Word编写一份简历的流程:

  • 打开新建一个Word文件
  • 写入个人简历信息
  • 保存文件
  • 关闭Word软件在这里插入图片描述

操作文件的整体过程和word写简历的过程类似:

  • 打开或新建立一个文件
  • 读/写数据
  • 关闭文件

在python中,使用 open方法 打开文件:

open(文件名,访问模式)
  1. “文件名”必须要填写
  2. “访问模式”是可选的

注意
如果使用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(需要修改的文件名, 新的文件名)

wenjiand读写

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简介、数据、数据库、数据可视化、预测、分类、聚类分析、数据清洗、数据融合与数据集成、数据归约、数据转换等内容。此外,本书还提供了相应的示例、代码,以帮助读者进一步理解相关方案的实现过程。

本书适合作为高等院校计算机及相关专业的教材和教学参考书,也可作为相关开发人员的自学用书和参考手册。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/7048.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis之字符串类型深入之SDS底层结构

作为一名程序员不可能不知道redis 知道redis不可能不知道redis的字符串 如果你真的熟悉redis不能不知道sds, 我们探究一下redis字符串的底层结构 sds翻译过来就是动态扩容(Simple Dynamic String)、先看一下最早版本redis的sds结构体 struct sdshdr{int len; //记录数组中…

某站戴师兄——Excel实战

1、设置下拉选项&#xff1a;数据——数据验证——设置 如下设置&#xff1a; 2、If、sumif、index、match综合应用&#xff1a; sumif(条件区域&#xff0c;条件&#xff0c;目标区域&#xff09; sumifs(目标区域,条件区域1&#xff0c;条件1,条件区域2&#xff0c;条件2) …

Telnet的三种配置和SSH配置

Telnet的三种配置 实验配置思路&#xff1a; 配置接口IP地址&#xff1a; R1——配置接口IP地址 R2——配置接口IP地址 认证模式为none的配置 R1——认证模式配置为none R2——测试Telnet连接R1设备 认证模式为passwrd的配置 R1——认证模式配置为password R2——测试Telnet连…

19 内核开发-内核源码编译

19 内核开发-内核源码编译 (1)开始准备 安装好virtual box ubuntu 系统后&#xff0c;即可下载内核代码&#xff0c;进行编译 历史内核源码地址&#xff1a;https://mirrors.tuna.tsinghua.edu.cn/kernel/v5.x/ 下载 linux-5.10.102.tar.gz 的包,可以使用wget 命令 创建编译目…

docker的介绍及使用--解决应用程序的环境配置问题

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录 系列文章目录前言docker的介绍及使用参考资料前言 认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长! 本文先对docker的介绍及使用–解决…

FR在开发组件时的注意事项

FR目前可以在三个地方开发自己的组件&#xff0c;普通报表参数面板上&#xff0c;普通报表填报下&#xff0c;决策系统中。 其中普通报表参数面板&#xff0c;决策系统中开发组件的属性是返回 CRPropertyDescriptor[] supportedDescriptor() 这种方式是提供属性的名字&#x…

Linux字符设备驱动(二) - 与设备驱动模型的关系

一&#xff0c;从/dev目录说起 从事Linux嵌入式驱动开发的人&#xff0c;都很熟悉下面的一些基础知识&#xff0c; 比如&#xff0c;对于一个char类型的设备&#xff0c;我想对其进行read wirte 和ioctl操作&#xff0c;那么&#xff1a; 1&#xff09;我们通常会在内核驱动中…

分数排序 内存限制: 256 Mb时间限制: 1000 ms

题目描述 给定正整数 n 与 k, 将分母范围在 1 到 n 之间的所有最简真分数排序, 请输出其中第 k 小的分数。 输入格式 两个整数 n 与 k, 保证 k 是一个合理的参数, 即保证分母不超过 n 的最简真分数至少有 k 个。 输出格式 一个分数,形如 A/B, A 与 B 分别表示分…

【数据库原理及应用】期末复习汇总高校期末真题试卷03

试卷 一、选择题 1 数据库中存储的基本对象是_____。 A 数字 B 记录 C 元组 D 数据 2 下列不属于数据库管理系统主要功能的是_____。 A 数据定义 B 数据组织、存储和管理 C 数据模型转化 D 数据操纵 3 下列不属于数据模型要素的是______。 A 数据结构 B 数据字典 C 数据操作 D…

QT开发(四) 制作一个JSON检查小工具

1、JSON概念 1.1 定义 JSON&#xff08;JavaScript Object Notation&#xff09;是一种轻量级的数据交换格式&#xff0c;它易于人类阅读和编写&#xff0c;同时也易于机器解析和生成。JSON基于JavaScript语言的子集&#xff0c;但是独立于编程语言&#xff0c;因此可以被多种…

根据相同的key 取出数组中最后一个值

数组中有很多对象 , 需根据当前页面的值current 和 数组中的key对比 拿到返回值 数据结构如下 之前写法 const clickedItem routeList.find(item > item.key current) // current是当前页 用reduce遍历数组返回最后一个值 const clickedItem routeList.reduce((lastIte…

RocketMQ:高性能、可靠的消息中间件

引言&#xff1a; 在当今的分布式系统中&#xff0c;消息中间件扮演着至关重要的角色。它们作为不同服务之间的桥梁&#xff0c;负责解耦、异步通信和流量削峰等功能。RocketMQ&#xff0c;作为一款高性能、可靠、易扩展的消息中间件&#xff0c;受到了广大开发者的青睐。 一…

音频可视化:原生音频API为前端带来的全新可能!

音频API是一组提供给网页开发者的接口&#xff0c;允许他们直接在浏览器中处理音频内容。这些API使得在不依赖任何外部插件的情况下操作和控制音频成为可能。 Web Audio API 可以进行音频的播放、处理、合成以及分析等操作。借助于这些工具&#xff0c;开发者可以实现自定义的音…

【网络】传输层的特点总结

1传输层协议 传输层主要有两个常见的协议&#xff1a;TCP&#xff08;传输控制协议&#xff09;和UDP&#xff08;用户数据报协议&#xff09;。TCP 提供可靠的、面向连接的通信服务&#xff0c;适用于对数据传输可靠性要求高的场景&#xff0c;如网页浏览、文件传输等。而 UD…

算法学习笔记(最短路——Bellman-Ford)

B e l l m a n — F o r d Bellman—Ford Bellman—Ford是一种单源最短路径算法&#xff0c;可以用于边权为负的图&#xff0c;但是只能用于小图。 大概过程&#xff1a; 枚举每一条边&#xff0c;更新可以更新的节点&#xff08;起点到自己距离为 0 0 0&#xff0c;从地点开…

IPD-开发流程

2024-5-6记录于PR办公室 在上一家公司做硬件产品经理的时候&#xff0c;Richard Li曾花费“巨资”请了华为前战略专家给我们培训&#xff0c;讲授IPD这门课的模式都很IPD&#xff0c;当时完全没重视&#xff0c;光想着不可能靠这个能把产品做好&#xff0c;这样做产品必定是一批…

wordpress外贸建站公司歪建站新版网站上线

wordpress外贸建站公司 歪猫建站 歪猫WordPress外贸建站&#xff0c;专业从事WordPress多语言外贸小语种网站建设与外贸网站海个推广、Google SEO搜索引擎优化等服务。 https://www.waimaoyes.com/dongguan

一种基于图搜索的全局/局部路径避障策略

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录 系列文章目录前言一种基于图搜索的全局/局部路径避障策略前言 认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长! 本文先对一种基于图搜索…

TypeScript 中,泛型和接口之间有什么联系和区别?

在TypeScript中&#xff0c;泛型和接口是两种不同的概念&#xff0c;但它们可以一起使用来增强代码的类型安全性和灵活性。下面我们来探讨它们之间的联系和区别。 联系 类型安全性&#xff1a;泛型和接口都用于提高代码的类型安全性。通过使用泛型和接口&#xff0c;你可以在编…

【driver2】设备读写,同步和互斥,ioctl,进程休眠,时间和延时,延缓

文章目录 1.实现设备读写&#xff1a;write函数中一个进程写没问题&#xff0c;两进程写&#xff1a;第一个进程运行到kzalloc时&#xff0c;第二个进程也执行了kzalloc&#xff0c;只第二个进程地址保存在c中&#xff0c;第一个进程分配内存空间地址丢失造成内存泄漏。第一个进…