掌握Python文件操作的绝招:打造数据之径,揭开文件操作的神秘面纱

在这里插入图片描述

文章目录

  • 前言
  • 文件的基本操作
    • 打开文件操作
    • 关闭文件操作
    • 对文件进行操作
      • 1)只读文件操作
        • read()
        • readlines()
        • readline()
        • seek()
      • 2)只写文件操作
      • 3)文件追加操作
      • 读写、追加读写操作
        • 1. r+ 模式打开文件
        • 2. w+ 模式打开文件
        • 3. a+ 模式打开文件
      • 以二进制的形式打开文件并操作
  • 备份文件操作
    • 提示用户输入文件名,并生成一个有效的备份文件名
    • 将原文件中的数据拷贝到新文件中
  • 文件和文件夹操作
    • 1.文件重命名
    • 2.删除文件
    • 3.创建文件夹
    • 4.删除文件夹
    • 5.获取当前目录
    • 6.改变默认目录
    • 7.获取目录列表

前言

我们应该都知道,我们日常使用的电脑和手机其实很多的操作对象都是文件,我们的键盘和屏幕也可以类似看成是文件,文件在我们的日常生活中起着非常大的作用,因为文件可以持久的存储数据。而作为学习 python 的我们来说,文件操作的学习也是必不可少的,那么今天我将为您提供实用的知识和技巧,让您能够轻松应对各种文件操作任务。让我们一同探索Python文件操作的魅力,开拓数据处理的新境界吧!🚗🚗
在这里插入图片描述

文件的基本操作

打开文件操作

open(name,mode)
  • name:指要打开的目标文件名的字符串(也可以是文件的具体路径)
  • mode:设置打开文件的模式(访问模式)

在这里插入图片描述
我们可以使用一个变量来接收 open 返回的文件对象,为后面的操作做准备。

这里打开文件操作没多少需要注意的,唯一需要注意的就是,当我们以读的形式打开文件的时候,此文件必须存在,否则就会报错。

f = open('test.txt','r')

在这里插入图片描述

在这里插入图片描述

这里我们提前创建一个 test.txt 文件。

f = open('test.txt','r')

在这里插入图片描述

关闭文件操作

当我们打开文件的时候,到最后要记住关闭这个文件,否则会一直占用着我们的资源。
文件对象.close() 关闭文件操作

f = open('test.txt','r')

f.close()

在这里插入图片描述

对文件进行操作

1)只读文件操作

进行读文件操作的时候,我们需要以 读 的形式打开文件。
在这里插入图片描述
我们先在 test.txt 文件中准备点数据,然后我们进行读文件操作。

read()

read(num) 当不传入num的时候,表示读取文件中的所有数据,如果传入num参数,表示读取num个字节的数据。

# 打开文件
f = open('test.txt','r')

# 进行文件操作
print(f.read())

# 关闭文件
f.close()

在这里插入图片描述

带有num参数

# 打开文件
f = open('test.txt','r')

# 操作文件
print(f.read(7))

# 关闭文件
f.close()

在这里插入图片描述
记住换行符也算一个字节

readlines()

readlines() 函数读取文件中的每一行,以列表的形式返回数据,每一行的数据是列表的每一个元素。

# 打开文件
f = open('test.txt','r')

# 进行文件操作
print(f.readlines())

# 关闭文件
f.close()

在这里插入图片描述
这里为什么会出现 \n ,因为我们在向文件中输入信息的时候敲了回车键,回车键 \n 也被认为是一个字符。

readline()

readline() 函数每一次就只读取文件的一行,再次调用readline() 函数的时候,会继续从下一行开始读取。

# 打开文件
f = open('test.txt','r')

# 进行文件操作
print(f.readline())
print(f.readline())

# 关闭文件
f.close()

在这里插入图片描述

seek()

seek() 函数用来移动文件指针。
文件对象.seek(偏移量,起始位置)

偏移量单位为字节

当起始位置:

  • 为0时,表示文件开头
  • 为1时,表示文件当前位置
  • 为2时,表示文件的末尾
# 打开文件
f = open('test.txt','r')

# 进行文件操作
f.seek(2,0)  # 从与文件开头处偏移量为两个字节的位置开始
print(f.readline())
print(f.readline())

# 关闭文件
f.close()

在这里插入图片描述

2)只写文件操作

当进行写文件操作的时候,需要以 写 的模式打开文件。

# 打开文件
f = open('test.txt','w')

在这里插入图片描述

当我们运行完这段代码的时候,我们发现 test.txt 文件里面的内容消失了。

在这里插入图片描述
这是因为,当我们以 写 的模式打开文件的时候,文件指针会回到文件开头处,并且写入会覆盖原有内容。

不仅如此,当我们以 写 的模式打开文件的时候,如果文件不存在,会自动创建该文件。

我们先将之前创建的 test.txt 文件给删除了,然后以 写 的形式打开 test.txt 文件。

在这里插入图片描述

# 打开文件
f = open('test.txt','w')

当我们运行这段代码的时候,我们会发现自动创建了 test.txt 文件。

在这里插入图片描述

向文件中写入数据
文件对象.write()

# 打开文件
f = open('test.txt','w')

# 写入数据
f.write('abcdef')

# 关闭文件
f.close()

在这里插入图片描述
后面的操作,原文件中默认数据为abcdef。

3)文件追加操作

使用文件追加操作的时候需要以 文件追加 的模式的打开文件,并且如果该文件不存在,也会自动创建一个文件。

# 打开文件
f = open('test.txt','a+')

# 操作文件
f.write('12345')

# 关闭文件
f.close()

在这里插入图片描述

读写、追加读写操作

当我们以 w+、r+ 的模式打开文件的时候,可以对文件进行读和写的操作,但是我们需要注意文件指针的位置。

1. r+ 模式打开文件

# 打开文件
f = open('test.txt','r+')

# 操作文件
print(f.read())
f.write('@@@@@')

# 关闭文件
f.close()

在这里插入图片描述
在这里插入图片描述

这里当我们写入数据的时候,为什么没有覆盖原数据呢?我们要注意文件指针的位置,当我们进行完读操作后,文件指针位于文件的末尾,然后写操作是从文件指针所在的位置开始写入的。

python 使用 r+ 模式打开文件具有以下特性:

  1. 读取和写入:r+模式可以同时进行读取和写入操作。它允许您在读取文件内容的同时,通过write()方法写入新的内容到文件中。这种模式非常适用于需要读取和修改文件内容的情况。

  2. 文件指针位置:在使用r+模式打开文件后,文件指针的初始位置将位于文件的开头。您可以使用seek()方法将文件指针移动到您需要读取或写入的位置。请注意,在进行写入操作时,新的内容将从文件指针的位置开始写入,可能会覆盖原有内容。

  3. 文件截断:r+模式不会自动截断文件。如果您在写入操作时,新的内容比原有内容更短,那么一部分原有内容可能仍然保留在文件中。因此,如果您希望完全覆盖文件并只保留新的内容,可以使用truncate()方法来截断文件,或者在打开文件时选择w模式。

  4. 文件不存在:如果使用r+模式打开的文件不存在,将会引发FileNotFoundError异常。因此,在使用r+模式打开文件之前,请确保文件已经存在或您有相应的错误处理机制。

这里我们针对第三种特性举一个例子:

test.txt 文件中含有数据abcdef。

# 打开文件
f = open('test.txt','r+')

# 操作文件
f.write('@@@@@')  
print(f.read())

# 关闭文件
f.close()

在这里插入图片描述
在这里插入图片描述

当我们进行写入操作的时候,文件指针在文件开始处,写入数据从文件指针所在的位置开始写入,所以就会覆盖掉原有的五个长度的内容,文件指针也会随之移动,当进行读操作的时候也会从文件指针所在的位置开始读取。简单来说就是我们需要随时注意文件指针所在的位置。读写和追加操作都是从文件指针所在的位置开始的。

2. w+ 模式打开文件

test.txt 文件含有abcdef数据。

# 打开文件
f = open('test.txt','w+')

# 操作文件
print(f.read())
f.write('@@@@@')

# 关闭文件
f.close()

在这里插入图片描述
在这里插入图片描述

当我们使用 w+ 模式打开文件的时候,如果文件不存在,则创建文件,如果文件存在,则会先清空文件中原有的数据。

3. a+ 模式打开文件

当以 a+ 模式打开文件时,文件指针默认会在文件的末尾,所以我们直接打印数据的时候,什么都打印不出来,这需要我们配合着seek() 函数来使用。

# 打开文件
f = open('test.txt','a+')

# 操作文件
print(f.read())
f.write('@@@@@')

# 关闭文件
f.close()

在这里插入图片描述
在这里插入图片描述

将文件指针设置到文件开头

# 打开文件
f = open('test.txt','a+')

# 操作文件
f.seek(0)
print(f.read())
f.write('@@@@@')

# 关闭文件
f.close()

在这里插入图片描述
在这里插入图片描述

以二进制的形式打开文件并操作

以 rb、wb、ab、rb+、wb+、ab+的形式打开文件并操作,都是以二进制的形式展现和操作的,其他操作都是一样的。

以二进制的形式读

# 打开文件
f = open('test.txt','rb')

# 文件操作
print(f.read())

# 关闭文件
f.close()

在这里插入图片描述
以二进制的形式写
我们再写入的时候需要使用 b' ' 来表示写入的是二进制。

# 打开文件
f = open('test.txt','wb')

# 文件操作
f.write(b'zhangsan')

# 关闭文件
f.close()

在这里插入图片描述
这里虽然我们看到的还是一样的,但其实它是以二进制的形式表现的。

备份文件操作

在生活中,我们也会经常遇到文件备份的操作,那么我将为大家来揭晓文件备份操作的原理。

通常系统会提示你输入要备份的文件的名称,然后会生成一个 原文件名[备份].后缀 的文件。

提示用户输入文件名,并生成一个有效的备份文件名

因为文件的后缀是由最后一个出现的 . 的以及 . 后面的字符串所组成的,所以我们需要找到最后一个出现的 . 的位置,并且根据 . 的位置是否为 0 来判断文件名的合法性。.txt 这种文件名就是不合法的。

old_name = input('请输入你要备份的文件的名称:')

index = old_name.rfind('.')  # 从后往前找,找到的第一个.的位置就是最后一个.的位置
if index > 0:  # 判断文件名的合法性
    postfix = old_name[index:]
    
new_name = old_name[:index] + '[备份]' + postfix  # 组合成新的备份文件名

将原文件中的数据拷贝到新文件中

因为原文件中数据可能较多,一次拷贝可能会出现问题,所以我们分多次拷贝,一次拷贝部分数据。

# 打开原文件,并创建备份文件
old_f = open(old_name,'r')
new_f = open(new_name,'w')

while True:
    con = old_f.read(1024)
    if len(con) == 0:  # 当读取的内容长度为0时,表明原文件内容已读取完
        break
    new_f.write(con)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

文件和文件夹操作

在 python 中,文件和文件夹操作需要借助模块 os 里面的相关功能,所以我们需要导入 os 模块 import os

1.文件重命名

os.rename(原文件名,新文件名)
import os
os.rename('test.txt','test1.txt')

在这里插入图片描述

2.删除文件

os.remove(文件名)
os.remove('test1.txt')

在这里插入图片描述

3.创建文件夹

os.mkdir(文件夹名)
os.mkdir('aa')

在这里插入图片描述

4.删除文件夹

os.rmdir(文件夹)
os.rmdir('aa')

在这里插入图片描述

5.获取当前目录

os.getcwd()
print(os.getcwd())

在这里插入图片描述

6.改变默认目录

os.chdir(目录)

如果我们想要在文件夹 aa 下面再创建一个文件夹 bb 该怎么办呢?

os.mkdir('aa')
os.mkdir('bb')

这样可以吗?
在这里插入图片描述
显然不行,aa和bb属于同一级目录,这是因为默认目录是这个:
在这里插入图片描述
添加文件夹也是在这个默认目录下添加的,那么如果我们想要在aa文件夹下创建bb文件夹,就需要我们更改默认目录。

os.mkdir('aa')
os.chdir('aa')  # 更改默认目录为aa
os.mkdir('bb')

在这里插入图片描述

7.获取目录列表

os.listdir(目录)

os.listdir(目录) 会以列表的形式返回该目录下的所有文件。

print(os.listdir('aa'))

在这里插入图片描述
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

UDP客户端和服务器

UDP客户端,也就是首先主动发送数据的一方,也就是发起服务请求的一方。 UDP服务器,也就是首先等待接收数据,并对接收的数据进行处理,返回计算结果的一方,也就是提供服务的一方。 在下面实验中使用到的函数 …

Linux进度条

Linux进度条 一.基本概念1.回车和换行2.缓冲区2.实现倒计时 二.进度条 一.基本概念 1.回车和换行 回车:指光标移到该行的起始位置(\r)。 换行:换到下一行(\n)。 在c语音里\n将回车和换行相结合了。 2.缓冲…

存在CSRF漏洞的CMS练习

前言 作者简介:不知名白帽,网络安全学习者。 博客主页:不知名白帽的博客_CSDN博客-网络安全,CTF,内网渗透领域博主 网络安全交流社区:https://bbs.csdn.net/forums/angluoanquan CMS 链接:https://pan.baidu.com/s/13F…

Windows操作系统安全加固

Windows操作系统安全加固 一、安全加固基本思路1.1、安全基线1.2、系统信息审查 二、Windows安全配置加固2.1、漏洞修复——补丁安装2.2、漏洞修复——端口封禁2.2.1、windows高危端口加固实践——封禁135端口对外开放 2.3、安全配置加固——账号口令 一、安全加固基本思路 1.…

LinuxI2C应用编程——访问EEPROM

文章目录 介绍读芯片手册代码编译运行 阅读博文:LinuxI2C应用编程——I2C-Tools的使用 介绍 EEPROM (Electrically Erasable Programmable read only memory),指带电可擦可编程只读存储器。是一种掉电后数据不丢失的存储芯片。 读芯片手册 首先按如图…

cmake操作目录

目录 cmake如何使用子目录 demo cmake生成build目录结构 如果指定子目录编译文件名字(binaryDir) 如果指定子目录编译的路径(binaryDir) 子目录相关的作用域 demo 子目录中定义project cmake如何使用子目录 如果项目比较小的话,我们将所有源码文件放到一个目录里面是没…

java环境搭建2-idea安装激活

windows环境装Java开发环境与idea安装激活 安装jdk安装idea激活idea新建项目开启Java学习 java环境搭建2-idea安装激活 之前安装了wslLinux子环境的Java开发环境,但是再许多地方没有人使用vscode进行Java开发,因为环境配置很麻烦,还有各种插件. windows环境装Java开发环境与ide…

django-vue-admin curd_demo 快速crud教程

django-vue-admin curd_demo 快速crud教程 快速CRUD开发教程:https://bbs.django-vue-admin.com/article/9.html 如何在 env.py 文件配置Mysql数据库:https://bbs.django-vue-admin.com/question/4.html 导入导出配置教程:https://bbs.djang…

机器学习总览

机器学习 1.什么是机器学习? 机器学习是使计算机像人类一样学习与行动的科学,并通过观察与现实世界交互的形式向计算机提供数据和信息,从而随着时间的推移以自主的方式改善其学习。 通过经验提高某些任务性能的计算机程序。 人工智能>机器…

人工智能与Chat GPT

一本书全面掌握ChatGPT,既有向ChatGPT提问的技巧, 也有构建自己的ChatGPT模型的方法,涵盖开发背景、关联技术、使用方法、应用形式、实用案例等 人工智能是我们这个时代最热门的话题,人们既希望它能代替我们做一些工作&#xff0c…

tecplot360 只显示指定phase的设定体积分数的区域

tecplot360 只显示指定phase的设定体积分数的区域 到数入据抽取切面设定显示体积分数范围 参考1: Tecplot中如何提取水线面(自由表面)并绘图 参考2: 两相流计算中,如何用Tecplot提取水相断面平均物理量? …

HTTP 协议的基本格式

目录 1.基本格式 首行 请求报头 关于cookie 关于Referer 响应的报文 首行 关于状态码 1.基本格式 让我们来看看fiddler抓包的下的实际报文情况 首行 在http1.1中,有如下方法 POST、GET、HEAD、PUT、OPTIONS、DELETE、TRACE、CONNECT 在我们抓包遇到的环境中&…

【花雕】全国青少年机器人技术一级考试备考实操搭建手册8

随着科技的不断进步,机器人技术已经成为了一个重要的领域。在这个领域中,机械结构是机器人设计中至关重要的一部分,它决定了机器人的形态、运动方式和工作效率。对于青少年机器人爱好者来说,了解机械结构的基础知识,掌…

Stable Diffusion WebUI Ubuntu 22.04 LTS RTX2060 6G 极限显存出图

模型 默认选中 chilloutmix_Ni.safetensors&#xff0c;重启webui.sh进程 正向词 best quality, ultra high res, (photorealistic:1.4), 1girl, <lora:koreanDollLikeness_v15:1> ,<lora:yaeMikoRealistic_yaemikoMixed:1>, 反向词 paintings, sketches, (…

基于simulink使用光流法跟踪汽车(附源码)

一、前言 此示例演示如何使用光流估计在视频序列中检测和跟踪汽车。 二、模型 下图显示了使用光流跟踪汽车模型&#xff1a; 三、用光流结果跟踪汽车 该模型使用光流估计技术来估计视频序列的每一帧中的运动矢量。通过阈值化运动矢量&#xff0c;该模型创建包含移动对象斑点…

K8S安全管理

1 安全管理 1.1 安全框架 1.1.1 认证框架 学习目标 这一节&#xff0c;我们从 基础知识、认证流程、小结 三个方面来学习。 基础知识 资源操作 用户访问k8s业务应用的流程&#xff1a;方法一&#xff1a;无需api_server认证用户 -- ingress|service -- pod方法二&#xf…

什么事RPC并实现一个简单的RPC

1. 基本的RPC模型 主要介绍RPC是什么&#xff0c;基本的RPC代码&#xff0c;RPC与REST的区别&#xff0c;gRPC的使用 1.1 基本概念 RPC&#xff08;Remote Procedure Call&#xff09;远程过程调用&#xff0c;简单的理解是一个节点请求另一个节点提供的服务本地过程调用&am…

K8S的概念和基本应用

学习视频&#xff1a;Kubernetes基本概念和应用_哔哩哔哩_bilibili 零 . 架构概览 master节点&#xff1a;管理调度集群资源&#xff0c;一般为多节点构成&#xff0c;可以是物理机&#xff0c;也可以是虚拟机。worker节点&#xff1a;资源的提供者&#xff0c;一般为多节点构…

day03 重新学python——python函数

文章目录 一、python函数1.函数介绍2.函数的定义3.函数的参数4.函数的返回值5.函数的说明文档6.函数的嵌套调用7.变量的作用域8.综合案例 一、python函数 1.函数介绍 函数&#xff1a;即组织好的、课重复利用&#xff0c;用来实现特殊功能的代码段&#xff0c;这样可以提高代码…

揭秘python函数:编程艺术的核心力量(3)

文章目录 前言递归lambda表达式lambda 的参数形式无参数位置参数关键字参数缺省参数可变参数1.包裹位置传递2.包裹关键字传递 带判断条件的lambda表达式列表数据按照字典key的值进行排序 高阶函数的使用内置高阶函数1.map()2.reduce()3.filter() 前言 前面我们已经学习了 pyth…