广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python学习之文件的读取详解
  • 576
分享到

Python学习之文件的读取详解

2024-04-02 19:04:59 576人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录文件读取的模式文件对象的读取方法使用 read() 函数一次性读取文件全部内容使用 readlines() 函数 读取文件内容使用 readline() 函数 逐行读取文件内容m

上一章节 我们学习了如何利用 open() 函数创建一个文件,以及如何在文件内写入内容;今天我们就来了解一下如何将文件中的内容读取出去来的方法。

文件读取的模式

模式介绍
r (read 的缩写)读取文件(返回的是字符串类型)
rb二进制形式读取文件

注意:我们接触文件的写入与读取都是使用的 字符串 类型,那么 集合、元组、列表等就不能写入了么?严格来说是不可以的,但是我们可以进行数据类型转换转为字符串呀 。写入的时候转为字符串类型,读取的时候再转为原来的数据类型即可。 嘿嘿嘿…

文件对象的读取方法

方法名参数介绍举例
read将文件内容一次性全部独取出来,返回整个整个文件的字符串f.read()
readlines将文件内容的每一行内容切割成列表读取,返回文件列表f.readlines()
readline将文件每一行内容进行读取,一次返回一行,返回文件中的一行f.readline()
modeopen()函数的 mode属性,调用可返回当前文件模式f.mode()
name返回文件名称f.name()
closed返回一个 bool 类型,调用 closed() 函数可以知道文件是否关闭f.closed()

使用 read() 函数一次性读取文件全部内容

注意:下文演示的 Terminal 终端是在 read_test.py 文件路径启动的 ipython 执行的。

这是我们读取 事先创建好的 read_test.py 文件的脚本

import os.path

current_path = os.getcwd()

file = open('read_test.py', 'r')
data = file.read()
file.close()

print(data)
print('***************************')
print(type(data))

read_test.py 文件内容如下

# coding:utf-8

import os.path


current_path = os.getcwd()

file_path = os.path.join(current_path, 'test.txt')
file_test = open(file_path, 'w+', encoding='utf-8')
file_test.write('人生苦短 我用Python')
file_test.read()
file_test.close()

Terminal终端 执行效果如下图:

使用 readlines() 函数 读取文件内容

继续上面的脚本我们使用 readlines() 函数

file = open('read_test.py', 'r')
data = file.readlines()
file.close()

print(data)
print('***************************')
print(type(data))

Terminal 终端 执行的效果如下图:

注意:区别于 print(data) ,直接打印 data ,显示效果如下:

这里我们发现每一行和空行都会有一个换行符,如果我们需要读取、处理每一行的内容,空行与换行符会给我们造成很大的困扰。这里我们就可以利用到字符串的 strip() 函数加上 for 循环 就可以处理了。

_data = []

for i in data:
    temp = i.strip()
    if temp != '':
        _data.append(temp)
        
_data

# >>> 执行结果如下图:

使用 readline() 函数 逐行读取文件内容

上文我们提到 readline() 函数 会针对文件每一行内容进行读取,一次返回一行;如果想要读取下一行内容,就需要再一次执行 readline() 函数;下面我们来看一下 演示案例:

file = open('read_test.py', 'r')
data = file.readline()

data

# >>> 执行结果如下:
# >>> '# coding:utf-8\n'

data = file.readline()

data

# >>> 执行结果如下:
# >>> '\n'

如下图:

mode()、name()、closed() 函数演示

见下图:

文件读取小实战

还记得我们上一章节的文件的创建于写入里面的实战小案例么?今天我们就在上一章节的实战小案例上进行一个补充,拓展一下我们关于读取文件的功能(函数)

在进行 文件读取小实战之前,我们先来了解一下 wiht open() 函数,如下。

with open() 函数

前文我们了解到,如果想要读取一个文件就需要先使用 open() 函数,打开文件并赋予其打开的模式,最后必须要要操作 close() 函数;这就是一个完整的读取文件内容的一个步骤,但是这个步骤过于繁琐不说,在文件不存在或者没有执行 close() 函数的情况下,还会抛出一个ioError的错误,并且给出错误码和详细的信息告诉你文件不存在,示例如下:

每次如果都按照如上最终方案去写的话,实在太繁琐。Python引入了with语句来自动帮我们调用close()方法

重点:!!!with 的作用就是自动调用close()方法 !!!

# 使用方法:
with open('/path/to/file', 'r') as f:
	print(f.read())
    
# >>> 相较于单独使用 open() 函数,是不是代码更佳简洁,并且不必调用f.close()方法了呢?

利用with open() 函数读取文件的小实战

import os


def create_package(path):
    if os.path.exists(path):
        raise Exception('%s 已经存在,不可创建' % path)
    else:
        os.mkdir(path)

    init_path = os.path.join(path, '__init__.py')
    file_init = open(init_path, 'w', encoding='utf-8')
    file_init.write('# coding:utf-8\n')
    file_init.close()


class Open(object):
    def __init__(self, path, mode='w', is_return=True):     # 这里的 is_return 定义的是换行的意思,结合下文的 message 理解
        self.path = path
        self.mode = mode
        self.is_return = is_return

    def write(self, message):
        file_test = open(self.path, mode=self.mode)
        if self.is_return:      # 如果返回 Ture 则 在 message 后,增加换行符
            message = '%s\n' % message
        file_test.write(message)
        file_test.close()

    def read(self, is_strip=True):  # is_strip 用于判断每一行结尾的换行符将其去掉

        result = []                 # 定义一个空列表,用来读取每一行内容

        with open(self.path, mode=self.mode) as file:
            data = file.readlines() # 文件对象读取文件内容一但脱离 with open() 函数,就会自动执行 close() 函数 关闭文件

        for line in data:           # for循环遍历data ,若读取的那一行内容不为空且如果存在'\n'符,去掉'\n'符然后加入result列表
            if is_strip:            # is_strip 默认就是 True
                temp = line.strip()
                if temp != '':
                    result.append(temp)
            else:                   # 如果读取的那一行不为空,加入result列表
                if line != '':
                    result.append(line)
        return result


if __name__ == '__main__':
    current_path = os.getcwd()
    open_path = os.path.join(current_path, 'test.txt')
    open_test = Open(open_path, mode='r')
    data = open_test.read()
    # data = open_test.read(is_strip=False)
    print(data)

执行结果如下:

以上就是Python学习之文件的读取详解的详细内容,更多关于Python文件读取的资料请关注编程网其它相关文章!

--结束END--

本文标题: Python学习之文件的读取详解

本文链接: https://www.lsjlt.com/news/143680.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python学习之文件的读取详解
    目录文件读取的模式文件对象的读取方法使用 read() 函数一次性读取文件全部内容使用 readlines() 函数 读取文件内容使用 readline() 函数 逐行读取文件内容m...
    99+
    2022-11-13
  • Python学习之yaml文件的读取详解
    目录yaml 文件的应用场景与格式介绍yaml 文件的应用场景yaml 文件的格式第三方包 - pyyaml读取 yaml 文件的方法yaml文件读取演示案例yaml 文件的应用场景...
    99+
    2022-11-13
  • python学习之读取配置文件
    前言: 最近在接触利用python来写测试框架,本人也是个刚接触python,所以是个小菜鸟,今天开始,一点点的记录学习中的积累,方便以后的学习以及回顾,也希望能帮助跟我一样的小菜鸟...
    99+
    2022-11-10
  • Android学习之文件存储读取
    前言 相信大家都知道知道,在AndroidOS中,提供了五中数据存储方式,分别是:ContentProvider存储、文件存储、SharedPreference存储、SQLit...
    99+
    2022-06-06
    android学习 存储 Android
  • go学习笔记读取consul配置文件详解
    目录新建yaml文件读取远程配置新建yaml文件 在上文我们的 go学习笔记:使用 consul 做服务发现和配置共享 这里我们单独来用viper实现读取consul的配置...
    99+
    2022-11-13
  • python数据分析之文件读取详解
    目录前言:一·Numpy库中操作文件二·Pandas库中操作文件三·补充总结前言: 如果你使用的是Anaconda中的Jupyter,则不需要下载Pands和Numpy库;如果你使用...
    99+
    2022-11-12
  • Python学习之文件的创建与写入详解
    目录内置函数 - open 获取文件对象open() 函数利用文件对象进行创建与写入文件操作的写入模式文件对象的写入操作方法实战小案例在前面章节我们通过 os包学习了如何创建、读取一...
    99+
    2022-11-13
  • python学习之whl文件解释与安装详解
    目录.whl文件解释whl文件的安装格式:成功安装页面补充:whl文件安装失败解决方法总结.whl文件解释 whl文件时以wheel格式保存的python安装包,Wheel是Pyth...
    99+
    2022-11-11
  • tensorflow学习笔记之tfrecord文件的生成与读取
    训练模型时,我们并不是直接将图像送入模型,而是先将图像转换为tfrecord文件,再将tfrecord文件送入模型。为进一步理解tfrecord文件,本例先将6幅图像及其标签转换为t...
    99+
    2022-11-12
  • Go语言学习笔记之文件读写操作详解
    目录文件写文件读小结文件操作比较多,分为几篇来写吧。首先是文件的读写,在平时的工程化操作中使用最多。 文件写 样例代码如下 package main import ( "...
    99+
    2022-11-13
  • Android学习笔记之AndroidManifest.xml文件解析(详解)
    一、关于AndroidManifest.xml AndroidManifest.xml 是每个android程序中必须的文件。它位于整个项目的根目录,描述了package中暴露...
    99+
    2022-06-06
    android学习 xml文件 XML Android
  • .NetCore基础之读取配置文件详解
    目录涉及知识点安装插件读取Json文件1. 准备数据2. 创建IConfiguration接口实例3. 通过索引器进行读取4. 通过GetValue<T>()方法进行读取...
    99+
    2022-11-13
  • Python学习之文件操作
    #/usr/bin/python content='''\                      #这里使用''' This is a test file for python ''' f=file('content.txt','w'...
    99+
    2023-01-31
    操作 文件 Python
  • python之批量读取文件
    python的os模块可以实现普遍的操作系统功能,并且和平台无关。以下为实现根目录下文件的批量读取。 os.listdir(dirname)可以列出dirname下的目录和文件,依次读取相应的文件即可。 # -*- coding...
    99+
    2023-01-31
    批量 文件 python
  • 详解python读取matlab数据(.mat文件)
    我们都知道,matlab是一个非常好用的矩阵计算分析软件,然额,matlab自带的绘图效果极为锯齿,所以,这里分享一个在python中读取matlab处理后的数据.mat文件。 1...
    99+
    2022-11-12
  • python读取文件名及后缀详解
    目录os.listdir()实验代码:输出:结果分析:os.path.splitext()实验代码:输出:结果分析:os.path.split()实验代码:输出:结果分析:案例分析思...
    99+
    2022-11-12
  • Django学习之静态文件与模板详解
    目录前言模板存放目录模板调用模板语法数据传递元素引用 for语句 if语句静态文件存放目录文件调用总结前言 我们已经配置完Django,今天就来学学静态文件与模板...
    99+
    2022-11-13
  • python学习之Python count()函数详解
    大家好,依旧是你们的萧萧啊。 Python中的count()函数是一种非常常用的方法,用于统计某个元素在列表、元组或字符串中出现的次数。它的使用非常简单,只需要传入要统计的元素作为参数即可。在本篇博客中,我将详细介绍count()函数的用法...
    99+
    2023-09-29
    学习 python
  • Python学习之迭代器详解
    目录什么是迭代器如何生成迭代器迭代器函数 - iter() 函数 与 next() 函数可迭代的对象生成迭代器迭代器的用法 - 演示案例什么是迭代器 迭代是 python 中访问集合...
    99+
    2022-11-13
  • python 读取excel文件生成sql文件实例详解
    python 读取excel文件生成sql文件实例详解 学了python这么久,总算是在工作中用到一次。这次是为了从excel文件中读取数据然后写入到数据库中。这个逻辑用java来写的话就太重了,所以这次考...
    99+
    2022-06-04
    文件 详解 实例
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作