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

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


前言


我们应该都知道,我们日常使用的电脑和手机其实很多的操作对象都是文件,我们的键盘和屏幕也可以类似看成是文件,文件在我们的日常生活中起着非常大的作用,因为文件可以持久的存储数据。而作为学习 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+ 模式打开文件具有以下特性:


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


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


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


文件不存在:如果使用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()

这里虽然我们看到的还是一样的,但其实它是以二进制的形式表现的。


掌握Python文件操作的绝招:打造数据之径,揭开文件操作的神秘面纱-2:https://developer.aliyun.com/article/1430380

相关文章
|
2月前
|
数据采集 数据可视化 数据挖掘
利用Python自动化处理Excel数据:从基础到进阶####
本文旨在为读者提供一个全面的指南,通过Python编程语言实现Excel数据的自动化处理。无论你是初学者还是有经验的开发者,本文都将帮助你掌握Pandas和openpyxl这两个强大的库,从而提升数据处理的效率和准确性。我们将从环境设置开始,逐步深入到数据读取、清洗、分析和可视化等各个环节,最终实现一个实际的自动化项目案例。 ####
305 10
|
6天前
|
数据采集 数据安全/隐私保护 Python
从零开始:用Python爬取网站的汽车品牌和价格数据
在现代化办公室中,工程师小李和产品经理小张讨论如何获取懂车帝网站的汽车品牌和价格数据。小李提出使用Python编写爬虫,并通过亿牛云爬虫代理避免被封禁。代码实现包括设置代理、请求头、解析网页内容、多线程爬取等步骤,确保高效且稳定地抓取数据。小张表示理解并准备按照指导操作。
从零开始:用Python爬取网站的汽车品牌和价格数据
|
1天前
|
算法 Serverless 数据处理
从集思录可转债数据探秘:Python与C++实现的移动平均算法应用
本文探讨了如何利用移动平均算法分析集思录提供的可转债数据,帮助投资者把握价格趋势。通过Python和C++两种编程语言实现简单移动平均(SMA),展示了数据处理的具体方法。Python代码借助`pandas`库轻松计算5日SMA,而C++代码则通过高效的数据处理展示了SMA的计算过程。集思录平台提供了详尽且及时的可转债数据,助力投资者结合算法与社区讨论,做出更明智的投资决策。掌握这些工具和技术,有助于在复杂多变的金融市场中挖掘更多价值。
22 12
|
1月前
|
数据采集 Web App开发 数据可视化
Python用代理IP获取抖音电商达人主播数据
在当今数字化时代,电商直播成为重要的销售模式,抖音电商汇聚了众多达人主播。了解这些主播的数据对于品牌和商家至关重要。然而,直接从平台获取数据并非易事。本文介绍如何使用Python和代理IP高效抓取抖音电商达人主播的关键数据,包括主播昵称、ID、直播间链接、观看人数、点赞数和商品列表等。通过环境准备、代码实战及数据处理与可视化,最终实现定时任务自动化抓取,为企业决策提供有力支持。
|
2月前
|
数据采集 Web App开发 监控
Python爬虫:爱奇艺榜单数据的实时监控
Python爬虫:爱奇艺榜单数据的实时监控
|
2月前
|
数据采集 分布式计算 大数据
构建高效的数据管道:使用Python进行ETL任务
在数据驱动的世界中,高效地处理和移动数据是至关重要的。本文将引导你通过一个实际的Python ETL(提取、转换、加载)项目,从概念到实现。我们将探索如何设计一个灵活且可扩展的数据管道,确保数据的准确性和完整性。无论你是数据工程师、分析师还是任何对数据处理感兴趣的人,这篇文章都将成为你工具箱中的宝贵资源。
|
2月前
|
数据采集 存储 XML
python实战——使用代理IP批量获取手机类电商数据
本文介绍了如何使用代理IP批量获取华为荣耀Magic7 Pro手机在电商网站的商品数据,包括名称、价格、销量和用户评价等。通过Python实现自动化采集,并存储到本地文件中。使用青果网络的代理IP服务,可以提高数据采集的安全性和效率,确保数据的多样性和准确性。文中详细描述了准备工作、API鉴权、代理授权及获取接口的过程,并提供了代码示例,帮助读者快速上手。手机数据来源为京东(item.jd.com),代理IP资源来自青果网络(qg.net)。
|
3月前
|
传感器 物联网 开发者
使用Python读取串行设备的温度数据
本文介绍了如何使用Python通过串行接口(如UART、RS-232或RS-485)读取温度传感器的数据。详细步骤包括硬件连接、安装`pyserial`库、配置串行端口、发送请求及解析响应等。适合嵌入式系统和物联网应用开发者参考。
92 3
|
3月前
|
数据采集 JavaScript 程序员
探索CSDN博客数据:使用Python爬虫技术
本文介绍了如何利用Python的requests和pyquery库爬取CSDN博客数据,包括环境准备、代码解析及注意事项,适合初学者学习。
154 0
|
3月前
|
数据采集 存储 分布式计算
超酷炫Python技术:交通数据的多维度分析
超酷炫Python技术:交通数据的多维度分析

热门文章

最新文章

推荐镜像

更多