《手把手陪您学Python》31——文件的打开

在上一篇《手把手陪您学Python》30——模块中,我们学习了通过导入模块调用其他文件中的函数的方法,这也是我们第一次实现了跨程序或者说跨文件的操作。

接下来,我们将要进一步学习如何通过Python去操作其他文件,包括打开文件、读取文件、关闭文件、写入文件和存储文件等等。Python处理文件非常简单,这也是Python在文本和文件处理领域非常流行的原因。

为了便于今天以及后面几篇内容的讲解和演示,我们要自己先制作一个文本文件,作为贯穿我们后面几篇文章的示例文件。文本文件的内容大家可以随意制作,我这里就用《手把手陪您学Python》这一系列文章的部分标题作为内容,制作了一份文本文件contents.txt,其中已经写入的内容为:

《手把手陪您学Python》1——为什么要学Python?

《手把手陪您学Python》2——Python的安装

《手把手陪您学Python》3——PyCharm的安装和配置

《手把手陪您学Python》4——Hello World!

《手把手陪您学Python》5——Jupyter Notebook

《手把手陪您学Python》6——字符串的标识

《手把手陪您学Python》7——字符串的索引

《手把手陪您学Python》8——字符串的切片

《手把手陪您学Python》9——字符串的运算

《手把手陪您学Python》10——字符串的函数

大家可以通过关注“亦说Python”公众号,回复“手31”,下载这份文件以及本篇文章的实例程序。

下面,就开始介绍Python处理文件的基本操作。

1、文件路径

要读取一个文件,首先要知道文件在哪里。

a、相同文件夹

Python会默认现在程序所在的文件夹寻找,如果程序文件和目标文件在一个文件夹,那么是不需要告诉Python目标文件的路径的,只需要直接使用文件名contents.txt,Python就能够读取。

b、下级文件夹

如果目标文件在程序文件所在文件夹的下级(包括下一级或下多级),就可以使用“相对路径”。

比如,程序文件所在的文件夹为python,目标文件在python文件夹里的lesson文件夹里的text文件夹中。此时,目标文件的相对路径就是“lesson/text/contents.txt”。这时,不仅要告诉Python目标文件的文件名称是什么,还要告诉Python目标文件相对于程序文件的位置在哪里。

这里需要注意的是,Windows系统中的文件路径是使用反斜杠“\”来区分不同层级文件夹的,但在Python程序中,是可以使用斜杠“/”来表示的。如果也要使用反斜杠来表示的话,要注意不能直接使用反斜杠“\”,因为在Python中反斜杠是表示转义的。

如果文件路径中有t或者n开头的文件夹(比如C:\python\new\text.txt),与反斜杠组合起来时,\n以及\t会被Python解读为回行或者制表符的。所以当使用反斜杠显示文件地址时,最好对路径中的每一个反斜杠都用反斜杠进行转义,避免出现意外转义的情况(比如C:\\python\\new\\text.txt)。

c、其他文件夹

如果目标文件在程序文件的上级或者其他文件夹中,那么就需要使用“绝对路径”了。绝对路径就是我们文件存储的完整地址和准确位置,和地址栏的地址一样。

这时,就要告诉Python,目标文件的路径为“D:\study\python\contents.txt”。

需要记住的一点是,绝对路径可以代替相对路径使用,但相对路径不能代替绝对路径使用。

2、打开文件

知道了文件位置就可以使用Python的内建函数open()打开文件了。

a、open()

open()中的必须参数是目标文件的文件名(包括路径),其他可选参数含义及完整的语法格式为:

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

其中:

file: 必需,文件路径(相对或者绝对路径)

mode: 可选,文件打开模式

buffering: 设置缓冲

encoding: 一般使用utf8

errors: 报错级别

newline: 区分换行符

closefd: 传入的file参数类型

opener: 设置自定义开启器,开启器的返回值必须是一个打开的文件描述符

b、mode参数

在可选参数中,最主要的是文件打开模式mode,默认值为“r”,也就是以只读方式打开的,其他常用模式包括:

模式

描述

r

只读模式 (默认)。

w

只写模式,创建新文件(清除路径下的同名文件中的数据)。

x

只写模式,创建新文件,但存在同名路径时会创建失败。

a

添加到已经存在的文件(如果不存在就创建)。

r+

读写模式。

b

二进制文件的模式,添加到别的模式中(比如“rb”或“wb”)。

t

文件的文本模式(自动将字节解码为Unicode),可以添加到别的模式中(比如“rt”或“xt”)。

在本篇文章中,我们会选取其中几种较为常用的模式进行举例,其他未涉及的文件打开模式,大家可以自行编写实例进行测试。

c、encoding参数

另外一个可能会用到的参数是encoding。encoding是编码的意思,就是当我们要打开的文件编码格式,与我们编译器所用编码格式不一致时,需要增加的一个参数项,一般使用“encoding = 'utf-8'”作为关键字参数增加到open()函数中即可。

当我们的目标文件中只有英文字母、数字、字符时,一般是不需要添加这个参数的。如果目标文件中含有中文字符,不但要使用这个参数,而且要注意在我们制作目标文件时,要将编码模式改为UTF-8之后再保存,否则就可能出现无法解码的情况。此时,即使使用“encoding = 'utf-8'”,也会因为目标文件本身不是UTF-8格式的而无法打开。

 

图片

d、打开文件

学习了如何打开文件的open()函数后,我们就可以写出下面的代码打开我们的目标文件了:

In [1]: path = 'lesson/text/contents.txt'   # 相对路径,其他方式请大家自行练习
        file_object = open(path, encoding = 'utf-8')   # 默认mode = 'r'

由于相对路径和绝对路径一般比较长,所以习惯上会将路径赋值给path或者filename变量,再作为open()的函数。当然也可以直接将路径作为参数,特别是直接使用目标文件的文件名时,就可以直接作为open()的参数了。需要注意的是,无论是使用路径还是文件名,都要写成字符串的形式。

打开文件后我们是否就可以读取了呢?

让我们打印一下刚才打开的文件file_object,看看是不是目标文件的内容:

In [2]: path = 'lesson/text/contents.txt'
        file_object = open(path, encoding = 'utf-8')
        print(file_object)
Out[2]: <_io.TextIOWrapper name='lesson/text/contents.txt' mode='r' encoding='utf-8'>

可以看到,返回的结果并不是目标文件的内容,而是一个迭代器。也就是说,open()函数将目标文件打开后,只返回了一个可以用来遍历的数据,这点会在我们下一篇介绍的逐行读取文件时有所体会,而目标文件中的内容,还需要靠其他方式才能读取。

下一篇,我们就将重点讲解文件读取的几种方法,敬请关注。

 

 


感谢阅读本文!如有任何问题,欢迎留言,一起交流讨论^_^

要阅读《手把手陪您学Python》系列文章的其他篇目,请关注公众号点击菜单选择,或点击下方链接直达。

《手把手陪您学Python》1——为什么要学Python?

《手把手陪您学Python》2——Python的安装

《手把手陪您学Python》3——PyCharm的安装和配置

《手把手陪您学Python》4——Hello World!

《手把手陪您学Python》5——Jupyter Notebook

《手把手陪您学Python》6——字符串的标识

《手把手陪您学Python》7——字符串的索引

《手把手陪您学Python》8——字符串的切片

《手把手陪您学Python》9——字符串的运算

《手把手陪您学Python》10——字符串的函数

《手把手陪您学Python》11——字符串的格式化输出

《手把手陪您学Python》12——数字

《手把手陪您学Python》13——运算

《手把手陪您学Python》14——交互式输入

《手把手陪您学Python》15——判断语句if

《手把手陪您学Python》16——循环语句while

《手把手陪您学Python》17——循环的终止

《手把手陪您学Python》18——循环语句for

《手把手陪您学Python》19——第一阶段小结

《手把手陪您学Python》20——列表

《手把手陪您学Python》21——元组

《手把手陪您学Python》22——字典

《手把手陪您学Python》23——内置序列函数

《手把手陪您学Python》24——集合

《手把手陪您学Python》25——列表推导式

《手把手陪您学Python》26——自定义函数

《手把手陪您学Python》27——自定义函数的参数

《手把手陪您学Python》28——自定义函数的返回值

《手把手陪您学Python》29——匿名函数

《手把手陪您学Python》30——模块

For Fans:关注“亦说Python”公众号,回复“手31”,即可免费下载本篇文章所用示例语句。

亦说Python——Python爱好者的学习分享园地

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TMS320F28335是德州仪器(TI)推出的一款数字信号处理器(DSP),用于实现各种实时控制和信号处理应用。习DSP需要掌握相关的基本知识和编程技巧。 首先,我们可以通过阅读TMS320F28335的官方文档,即TMS320F28335的PDF手册。该手册详细介绍了DSP的硬件架构、指令集、寄存器和外设等内容。通过仔细阅读和理解手册,我们可以全面掌握DSP的基本结构和工作原理。 其次,我们可以选择一个合适的开发环境,如Code Composer Studio(CCS),这是TI为DSP开发提供的集成开发环境。在CCS中,我们可以创建新的项目并配置编译器和调试器。通过CCS集成的调试功能,我们可以方便地调试和验证自己的DSP程序。 为了更好地习DSP,我们可以按照以下步骤进行实践: 1.了解DSP的基本概念和数原理,如离散傅里叶变换(DFT)、离散时间傅里叶变换(DTFT)等。 2.习DSP的编程语言,如C语言或汇编语言。TI提供了DSP的编程工具包,可以帮助我们编写和调试DSP程序。 3.选择合适的实例或项目来进行实践。可以通过加载预定义的DSP库函数或手动编写代码来实现信号滤波、变换、调制等功能。 4.通过仿真和调试,验证自己的程序是否符合预期。根据调试结果进行修改和改进,直到达到要求。 5.不断习和积累经验,参考相关的书籍和教程,习其他高级的DSP算法和应用。 总之,习DSP需要理论和实践相结合。通过阅读TMS320F28335的官方文档,配置开发环境,习基本概念和编程语言,进行实践和调试,我们可以逐步掌握DSP的原理和应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值