自己弄了一个python学习群,感兴趣的可以加
准备
我们自己在读取文件的时候首先要知道文件的位置,否则也是没有办法将文件读取出来
这里涉及到:文件名和路径
路径指明了文件在计算机上的位置
在不同的操作系统中,路径的表示也有所不同
windows中使用的是反斜杠:E:\Download(在python中需要转义 E:\\Download)
linux中使用的是正斜杠:/data/logs/order
这一点要记住,否则windows中的斜杠在linux不能识别导致报错
创建路径
当我们创建一个文件的时候经常会需要我们去创建一个路径
下面我们开始创建一个路径出来
这里我们会用到python自带的os库
import os
filename = 'a.txt'
print(os.path.join('C:\\Users\\hcf', filename))
输出:
C:\Users\hcf\a.txt
下面我们先将创建路径放到一边,因为这一部分讲的是读取数据,下面我们演示如何读取数据
读取数据
with open('E:\\pythonLearn\\12194548.txt') as file_object:
contents = file_object.read()
print(contents)
输出:
aaa
那么我们再次更改12194548.txt文件中的内容为
aaa
bbb
再次运行程序
输出:
aaa
bbb
E:\pythonLearn\12194548.txt这个路径叫做绝对路径
当我们使用
with open('12194548.txt') as file_object:
contents = file_object.read()
print(contents)
这个代码的时候,这就是使用了相对路径
- “绝对路径”,总是从根文件夹开始
- “相对路径”,它相对于程序的当前工作目录
这部分代码Python做了什么呢?(以相对路径来说)
- 函数open()接受一个参数:要打开的文件的名称。
- Python在当前执行的文件所在的目录中查找指定的文件。
- 函数open()返回一个表示文件的对象,Python将这个对象存储在我们将在后面使用的变量中
- 有了表示文件对象后,使用方法read()读取这个文件的全部内容
- 将其作为一个长长的字符串存储在变量contents中
- 输出
具体关键字的意义:
with
关键字with在不再需要访问文件后将其关闭。
当然我们可以调用open()和close()来打开和关闭文件,
但这样做时,如果程序存在bug,导致close()语句未执行,文件将不会关闭。
这看似微不足道,但未妥善地关闭文件可能会导致数据丢失或受损。
如果在程序中过早地调用close(),你会发现需要使用文件时它已关闭(无法访问),这会导致更多的错误。
并非在任何情况下都能轻松确定关闭文件的恰当时机,但通过使用前面所示的结构,可让Python去确定:
你只管打开文件,并在需要时使用它,Python自会在合适的时候自动将其关闭。
但是有时候我们并不需要全部读取所有的数据,python也提供了逐行读取的方式
with open('12194548.txt') as file_object:
for line in file_object:
if line.__contains__('a'):
print(line)
输出:
aaa
在看一个
with open('12194548.txt') as file_object:
for line in file_object:
print(line)
输出:
aaa
bbb
可以发现空白行明显增多了,为何会出现这些空白行呢?
因为在这个文件中,每行的末尾都有一个看不见的换行符,而print语句也会加上一个换行符,因此每行末尾都有两个换行符:一个来自文件,另一个来自print语句。
那么如何消除呢?
回想一下上一节的字符串. 你可能会马上想到rstrip()函数
with open('12194548.txt') as file_object:
for line in file_object:
print(line.rstrip())
输出:
aaa
bbb
对于上面的换行符你可能觉得迷惑,没关系,看下面的代码:
with open('12194548.txt') as file_object:
contents = file_object.readlines()
print(contents)
输出:
['aaa\n', '\n', ' bbb']
这样你就会明白了吧。说到这里,那就得说说如何返回一个包含文件各行内容的列表。聪明的你已经发现了,就是readlines()函数
下面你就可以获取文件中的内容进行你想要的操作了
关注公众号:Python互助小组
一起学习,共同进步
里面有不定期的赠书活动哦