《手把手陪您学Python》31——文件的打开
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了《手把手陪您学Python》31——文件的打开,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含6685字,纯文字阅读大概需要10分钟。
内容图文
![《手把手陪您学Python》31——文件的打开](/upload/InfoBanner/zyjiaocheng/617/152e55efc77a4526985d511c5d5f9b1b.jpg)
在上一篇《手把手陪您学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》3——PyCharm的安装和配置
《手把手陪您学Python》5——Jupyter Notebook
For Fans:关注“亦说Python”公众号,回复“手31”,即可免费下载本篇文章所用示例语句。
![《手把手陪您学Python》31——文件的打开 - 文章图片](/upload/getfiles/0001/2021/4/30/20210430081651132.jpg)
内容总结
以上是互联网集市为您收集整理的《手把手陪您学Python》31——文件的打开全部内容,希望文章能够帮你解决《手把手陪您学Python》31——文件的打开所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。