初识Python之从文件中读取数据

自己弄了一个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做了什么呢?(以相对路径来说)

  1. 函数open()接受一个参数:要打开的文件的名称。
  2. Python在当前执行的文件所在的目录中查找指定的文件。
  3. 函数open()返回一个表示文件的对象,Python将这个对象存储在我们将在后面使用的变量中
  4. 有了表示文件对象后,使用方法read()读取这个文件的全部内容
  5. 将其作为一个长长的字符串存储在变量contents中
  6. 输出

具体关键字的意义:

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互助小组
一起学习,共同进步
里面有不定期的赠书活动哦
公众号:Python互助小组 或者搜索python_group

  • 8
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值