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中的文件操作,所以我也来写一篇博客进行总结,紧跟学校安排,也方便巩固该内容。

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

北天
+关注
目录
打赏
0
0
0
0
300
分享
相关文章
如何利用Python批量重命名PDF文件
本文介绍了如何使用Python提取PDF内容并用于文件重命名。通过安装Python环境、PyCharm编译器及Jupyter Notebook,结合tabula库实现PDF数据读取与处理,并提供代码示例与参考文献。
如何利用Python批量重命名文件
本文介绍了如何使用Python和PyCharm对文件进行批量重命名,包括文件名前后互换、按特定字符调整顺序等实用技巧,并提供了完整代码示例。同时推荐了第三方工具Bulk Rename Utility,便于无需编程实现高效重命名。适用于需要处理大量文件命名的场景,提升工作效率。
|
1月前
|
Python编程基石:整型、浮点、字符串与布尔值完全解读
本文介绍了Python中的四种基本数据类型:整型(int)、浮点型(float)、字符串(str)和布尔型(bool)。整型表示无大小限制的整数,支持各类运算;浮点型遵循IEEE 754标准,需注意精度问题;字符串是不可变序列,支持多种操作与方法;布尔型仅有True和False两个值,可与其他类型转换。掌握这些类型及其转换规则是Python编程的基础。
162 33
不会Python,还敢说搞大数据?一文带你入门大数据编程的“硬核”真相
不会Python,还敢说搞大数据?一文带你入门大数据编程的“硬核”真相
38 1
当Python同时操作1000个文件时,为什么你的CPU只用了10%?
本文介绍如何构建一个高效的文件处理系统,解决单线程效率低、多线程易崩溃的矛盾。通过异步队列与多线程池结合,实现任务调度优化,提升I/O密集型操作的性能。
45 4
[oeasy]python094_使用python控制音符列表_midi_文件制作
本文介绍了如何使用Python控制音符列表制作MIDI文件。首先回顾了列表下标索引(正数和负数)的用法,接着通过`mido`库实现MIDI文件生成。以《两只老虎》为例,详细解析了代码逻辑:定义音高映射、构建旋律列表、创建MIDI文件框架,并将音符插入音轨。还探讨了音符时值与八度扩展的实现方法。最终生成的MIDI文件可通过不同平台播放或编辑。总结中提到,此技术可用于随机生成符合调性的旋律,同时引发对列表其他实际应用的思考。
51 5
Python文件与目录比较全攻略:从基础操作到性能优化
文件比较的核心在于数据指纹校验,通过逐字节比对生成唯一标识,确保内容一致性。从标准库的os与filecmp到高性能第三方库如pydiffx,再到分布式与量子加密技术的未来趋势,文件比较广泛应用于数据备份、代码审查与系统监控等领域,是保障数据完整性的关键技术手段。
41 0
Python编程精进:正则表达式
正则表达式是一种强大的文本处理工具,用于搜索、匹配和提取模式。本文介绍了正则表达式的语法基础,如`\d`、`\w`等符号,并通过实例展示其在匹配电子邮件、验证电话号码、处理日期格式等场景中的应用。同时,文章提醒用户注意性能、编码、安全性等问题,避免常见错误,如特殊字符转义不当、量词使用错误等。掌握正则表达式能显著提升文本处理效率,但需结合实际需求谨慎设计模式。
|
3月前
|
使用Python实现multipart/form-data文件接收的http服务器
至此,使用Python实现一个可以接收 'multipart/form-data' 文件的HTTP服务器的步骤就讲解完毕了。希望通过我的讲解,你可以更好地理解其中的逻辑,另外,你也可以尝试在实际项目中运用这方面的知识。
211 69
Python爬虫结合API接口批量获取PDF文件
Python爬虫结合API接口批量获取PDF文件

热门文章

最新文章

推荐镜像

更多
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问