Python编程基础:文件基础

简介: 文件操作作为Python基础知识的一部分也非常的重要,熟练的掌握文件的各项操作,将来我们在数据分析、机器学习等一系列领域中才能更好的进行数据处理。

一、前言

本期内容我们将学习Python中的文件操作,学习如何使用Python处理文件,让程序能够快速地分析大量数据。

二、我的环境

  • 电脑系统:Windows 11
  • 语言版本:Python 3.10.4
  • 编译器:VSCode

三、从文件中读取数据

在数据分析,机器学习等等领域经常会用到使用Python读取本地数据集,我们要使用文本文件中的信息,首先需要将信息读取到内存中,我们可以一次性读取文件的全部内容,也可以以每次一行的方式逐步读取。

1、读取整个文件

下面我们在本地创建一个包含精确到小数点后30位的圆周率值,且在小数点后每10位处换行:

image-20221008093858501.png

下面我们创建一个程序去尝试读取这个文件:

withopen('pi_digits.txt') asf:
contents=f.read()
print(contents)

在Python中读取文件需要使用open()函数,它返回的是一个表示文件的对象,前面的关键字with在不再需要访问文件后自动将其关闭,如果没有使用with,则需要在文件操作之后使用close()将文件关闭,以免造成数据丢失或者受损。

它运行的结果是:

3.141592653589793238462643383279

另外如果我们访问的结果中带空格可以使用之前学到的方法strip去空格。

2、文件路径

在上面我们是直接传入文件名进行读取的,这是因为我们的文件就在当前执行文件所在的目录内,如果文件不在目录内,则我们需要提供文件路径,让Python到系统的特定位置去查找。

文件路径分为相对路径和绝对路径。

如果文件位于文件下中,我们可以使用相对路径来打开其中的文件:

withopen('text_files/filename.txt') asf:
    ...

显示文件路径时,Windows系统使用反斜杠(\)而不是斜杠(/),但在代码中依然可以使用斜杠。

还可以将文件在计算机中的准确位置告诉Python,这样就不用关心当前运行的程序存储在什么地方了。这称为绝对文件路径。在相对路径行不通时,可使用绝对路径。

绝对路径一般来说都比较长,所以一般采用将其赋值给一个变量,再传入到open()函数中:

file_path='D:/home/ehmatthes/other_files/text_files/filename.txt'withopen(file_path) asf:
    ...

另外需要注意的是,如果你使用的Windows系统,在文件资源管理器中复制文件的绝对路径时他会直接使用反斜杠,但使用反斜杠可能会引起报错,这是因为反斜杠用于对字符串中的字符进行转义,例如,对于路径"C:\path\to\file.txt",其中的\t将被解读为制表符。如果一定要使用反斜杠,可对路径中的每个反斜杠都进行转义,如"C:\path\to\file.txt"。

3、逐行读取

在读取文件时,有些时候我们可能需要在文件中查找特定信息,或者需要以某种方式修改文件中的文本,这个时候就需要我们检查其中的每一行,要以每次一行的方式检查文件,我们就需要使用到for循环。

例如:

filename='pi_digits.txt'withopen(filename) asf:
forlineinf:
print(line)

它运行的结果是:

3.141592653589793238462643383279

这里我们发现空格变多了,我们使用rstrip()方法去除多余的空格。

filename='pi_digits.txt'withopen(filename) asf:
forlineinf:
print(line.rstrip())

它运行的结果是:

3.141592653589793238462643383279

4、创建一个包含各行内容的列表

使用关键字with时,open()返回的文件对象只在with代码块内可用。如果要在with代码块外访问文件的内容,可在with代码块内将文件的各行存储在一个列表中,并在with代码块外使用该列表:可以立即处理文件的各个部分,也可以推迟到程序后面再处理。

举个例子:

filename='pi_digits.txt'withopen(filename) asf:
lines=f.readlines()
forlineinlines:
print(line.rstrip())

readlines()方法从文件中读取每一行,并将其存储在一个列表中,然后在后面使用一个for训练来打印列表中的各行,最后输出的结果和之前一样。

5、使用文件的内容

将文件读取到内存中后,我们就能以任何方式使用这些数据了,我们可以将之前的圆周率各行循环打出然后加入到一个字符串中,并删除每行末尾的换行符:

filename='pi_digits.txt'withopen(filename) asf:
lines=f.readlines()
pi_string=''forlineinlines:
pi_string+=line.strip()
print(pi_string)
print(len(pi_string))

它运行的结果是:

3.14159265358979323846264338327932

这样我们就获得了一个字符串。

对于可处理的数据量,Python没有任何限制,只要你的系统内存足够多,想处理多少数据都可以。

四、写入文件

保存数据的最简单的方式之一就是将其写入文件中。

1、写入空文件

要将文本写入文件,你在调用open()时需要提供另一个实参,告诉Python你要写入打开的文件。

例如:

filename='programming.txt'withopen(filename, 'w') asf:
f.write("I love programming.")

open()函数中第二个实参(‘w’)是告诉Python要以写入模式打开这个文件,打开文件时,可指定读取模式('r')、写入模式('w')、附加模式('a')或读写模式('r+')。如果省略了模式实参,Python将以默认的只读模式打开文件。

如果要写入的文件不存在,open()函数将自动创建一个文件,但需要注意的是如果写入文件时该文件以存在,则会覆盖之前的文件内容。

2、写入多行

函数write()不会在写入的文本末尾添加换行符,因此如果写入多行时没有指定换行符,你所写入的内容则会写入到一行中,要想写入的每一行内容都独占一行,则需要加入换行符。

例如:

filename='programming.txt'withopen(filename, 'w') asf:
f.write("I love programming.\n")
f.write("I love Python.\n")

image-20221008103348651.png

3、附加到文件

如果要给文件添加内容,而不是覆盖原有的内容,可以以附加模式('a')打开文件。以附加模式打开文件时,Python不会在返回文件对象前清空文件的内容,而是将写入文件的行添加到文件末尾。

例如:

filename='programming.txt'withopen(filename, 'a') asf:
f.write("I love Java.\n")
f.write("I love C++.\n")

image-20221008103619098.png

可以看出我们将新内容附加到了文件的末尾,而不是覆盖该文件内容。

五、最后我想说

本期Python文件操作内容到这里就结束了,内容不算很多,但需要我们去熟练的掌握文件的各项操作。

学校课程目前也正在学习Python中的文件操作,所以我也来写一篇博客进行总结,紧跟学校安排,也方便巩固该内容。

最后,谢谢你们的阅读,后续老师会布置相关的作业练习的,我也会第一时间更新的。

目录
相关文章
|
6天前
|
存储 数据挖掘 开发者
Python编程入门:从零到英雄
在这篇文章中,我们将一起踏上Python编程的奇幻之旅。无论你是编程新手,还是希望拓展技能的开发者,本教程都将为你提供一条清晰的道路,引导你从基础语法走向实际应用。通过精心设计的代码示例和练习,你将学会如何用Python解决实际问题,并准备好迎接更复杂的编程挑战。让我们一起探索这个强大的语言,开启你的编程生涯吧!
|
12天前
|
机器学习/深度学习 人工智能 TensorFlow
人工智能浪潮下的自我修养:从Python编程入门到深度学习实践
【10月更文挑战第39天】本文旨在为初学者提供一条清晰的道路,从Python基础语法的掌握到深度学习领域的探索。我们将通过简明扼要的语言和实际代码示例,引导读者逐步构建起对人工智能技术的理解和应用能力。文章不仅涵盖Python编程的基础,还将深入探讨深度学习的核心概念、工具和实战技巧,帮助读者在AI的浪潮中找到自己的位置。
|
11天前
|
机器学习/深度学习 数据挖掘 Python
Python编程入门——从零开始构建你的第一个程序
【10月更文挑战第39天】本文将带你走进Python的世界,通过简单易懂的语言和实际的代码示例,让你快速掌握Python的基础语法。无论你是编程新手还是想学习新语言的老手,这篇文章都能为你提供有价值的信息。我们将从变量、数据类型、控制结构等基本概念入手,逐步过渡到函数、模块等高级特性,最后通过一个综合示例来巩固所学知识。让我们一起开启Python编程之旅吧!
|
12天前
|
存储 Python
Python编程入门:打造你的第一个程序
【10月更文挑战第39天】在数字时代的浪潮中,掌握编程技能如同掌握了一门新时代的语言。本文将引导你步入Python编程的奇妙世界,从零基础出发,一步步构建你的第一个程序。我们将探索编程的基本概念,通过简单示例理解变量、数据类型和控制结构,最终实现一个简单的猜数字游戏。这不仅是一段代码的旅程,更是逻辑思维和问题解决能力的锻炼之旅。准备好了吗?让我们开始吧!
|
3天前
|
数据采集 存储 数据处理
Python中的多线程编程及其在数据处理中的应用
本文深入探讨了Python中多线程编程的概念、原理和实现方法,并详细介绍了其在数据处理领域的应用。通过对比单线程与多线程的性能差异,展示了多线程编程在提升程序运行效率方面的显著优势。文章还提供了实际案例,帮助读者更好地理解和掌握多线程编程技术。
|
5天前
|
存储 人工智能 数据挖掘
Python编程入门:打造你的第一个程序
本文旨在为初学者提供Python编程的初步指导,通过介绍Python语言的基础概念、开发环境的搭建以及一个简单的代码示例,帮助读者快速入门。文章将引导你理解编程思维,学会如何编写、运行和调试Python代码,从而开启编程之旅。
27 2
|
6天前
|
存储 Python
Python编程入门:理解基础语法与编写简单程序
本文旨在为初学者提供一个关于如何开始使用Python编程语言的指南。我们将从安装Python环境开始,逐步介绍变量、数据类型、控制结构、函数和模块等基本概念。通过实例演示和练习,读者将学会如何编写简单的Python程序,并了解如何解决常见的编程问题。文章最后将提供一些资源,以供进一步学习和实践。
17 1
|
9天前
|
存储 网络协议 IDE
从零起步学习Python编程
从零起步学习Python编程
|
12天前
|
机器学习/深度学习 存储 算法
探索Python编程:从基础到高级应用
【10月更文挑战第38天】本文旨在引导读者从Python的基础知识出发,逐渐深入到高级编程概念。通过简明的语言和实际代码示例,我们将一起探索这门语言的魅力和潜力,理解它如何帮助解决现实问题,并启发我们思考编程在现代社会中的作用和意义。
|
7天前
|
机器学习/深度学习 存储 数据挖掘
Python 编程入门:理解变量、数据类型和基本运算
【10月更文挑战第43天】在编程的海洋中,Python是一艘易于驾驭的小船。本文将带你启航,探索Python编程的基础:变量的声明与使用、丰富的数据类型以及如何通过基本运算符来操作它们。我们将从浅显易懂的例子出发,逐步深入到代码示例,确保即使是零基础的读者也能跟上步伐。准备好了吗?让我们开始吧!
18 0
下一篇
无影云桌面