Python学习之文件的读取详解

目录
  • 文件读取的模式
  • 文件对象的读取方法
    • 使用 read() 函数一次性读取文件全部内容
    • 使用 readlines() 函数 读取文件内容
    • 使用 readline() 函数 逐行读取文件内容
    • mode()、name()、closed() 函数演示
  • 文件读取小实战
    • with open() 函数
    • 利用with open() 函数读取文件的小实战

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

文件读取的模式

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

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

文件对象的读取方法

方法名 参数 介绍 举例
read 将文件内容一次性全部独取出来,返回整个整个文件的字符串 f.read()
readlines 将文件内容的每一行内容切割成列表读取,返回文件列表 f.readlines()
readline 将文件每一行内容进行读取,一次返回一行,返回文件中的一行 f.readline()
mode open()函数的 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文件读取的资料请关注我们其它相关文章!

(0)

相关推荐

  • Python学习之文件的创建与写入详解

    目录 内置函数 - open 获取文件对象 open() 函数 利用文件对象进行创建与写入 文件操作的写入模式 文件对象的写入操作方法 实战小案例 在前面章节我们通过 os包学习了如何创建.读取一个文件夹,但是并没有学习如何创建.读写一个文件,接下来我们就学习关于文件的处理.当我们学习完文件处理之后,就可以随意读写文件. 内置函数 - open 获取文件对象 open() 函数 open()函数是是python的读写文件的基本函数,它可以生成文件对象可以创建,也可以操作文件的读写. 用法: op

  • Python数据分析基础之文件的读取

    目录 一·Numpy库中操作文件 1.操作csv文件 2.在pycharm中操作csv文件 3.其他情况(.npy类型文件) 二·Pandas库中操作文件 1.操作csv文件 2.从剪贴板上复制数据 3.读取excel或xlsx文件 三·补充 1.常用 2.pandas中读取文件的函数 总结 前言:如果你使用的是Anaconda中的Jupyter,则不需要下载Pands和Numpy库:如果你使用的是pycharm或其他集成环境,则需要Pands和Numpy库 一·Numpy库中操作文件 1.操作

  • python数据分析之文件读取详解

    目录 前言: 一·Numpy库中操作文件 二·Pandas库中操作文件 三·补充 总结 前言: 如果你使用的是Anaconda中的Jupyter,则不需要下载Pands和Numpy库:如果你使用的是pycharm或其他集成环境,则需要Pands和Numpy库 一·Numpy库中操作文件 1.操作csv文件 import numpy as np a=np.random.randint(0,10,size=(3,4)) np.savetext("score.csv",a,deliminte

  • 教你用Python读取CSV文件的5种方式

    目录 第一招:简单的读取 第二招:用nametuple 第三招:用tuple类型转换 第四招:用DictReader 第五招:用字典转换 典型的数据集stocks.csv: 一个股票的数据集,其实就是常见的表格数据.有股票代码,价格,日期,时间,价格变动和成交量.这个数据集其实就是一个表格数据,有自己的头部和身体. 第一招:简单的读取 我们先来看一种简单读取方法,先用csv.reader()函数读取文件的句柄f生成一个csv的句柄,其实就是一个迭代器,我们看一下这个reader的源码: 喂给re

  • 实例讲解python读取各种文件的方法

    目录 1.yaml文件 2.CSV文件 3.ini文件 总结 1.yaml文件 # house.yaml-------------------------------------------------------------------------- # 1."数据结构"可以用类似大纲的"缩排"方式呈现 # 2.连续的项目通过减号"-"来表示,也可以用逗号来分割 # 3.key/value对用冒号":"来分隔 # 4.数组用

  • 聊聊Python对CSV文件的读取与写入问题

    今天天气"刚刚好"(薛之谦么么哒),无聊的我翻到了一篇关于csv文件读取与写入的帖子,作为测试小白的我一直对python情有独钟,顿时心血来潮,决定小搞他一下,分享给那些需要的小白,对于python大神们来说,简直就是小儿科,对于我这种测试小白,看到代码就如同打了鸡血一样,恩恩,好东西,好东西! csv文件的读取: 前期工作:在定义的py文件里边创建一个excel文件,并另存为csv文件,放入三行数据,我这里是姓名+年龄(可以自己随意写) 首先我们要在python环境里导入csv板块(

  • Python学习之文件的读取详解

    目录 文件读取的模式 文件对象的读取方法 使用 read() 函数一次性读取文件全部内容 使用 readlines() 函数 读取文件内容 使用 readline() 函数 逐行读取文件内容 mode().name().closed() 函数演示 文件读取小实战 with open() 函数 利用with open() 函数读取文件的小实战 上一章节 我们学习了如何利用 open() 函数创建一个文件,以及如何在文件内写入内容:今天我们就来了解一下如何将文件中的内容读取出去来的方法. 文件读取的

  • Python学习之yaml文件的读取详解

    目录 yaml 文件的应用场景与格式介绍 yaml 文件的应用场景 yaml 文件的格式 第三方包 - pyyaml 读取 yaml 文件的方法 yaml文件读取演示案例 yaml 文件的应用场景与格式介绍 yaml 文件的应用场景 yaml其实也类似于 json.txt ,它们都属于一种文本格式.在我们的实际工作中, yaml 文件经常作为服务期配置文件来使用. 比如一些定义好的内容,并且不会修改的信息,我们就可以通过定义 yaml 文件,然后通过读取这样的文件,将数据导入到我们的服务中进行使

  • Python学习之直方图均衡化原理详解

    目录 1.点算子 2.线性灰度变换 3.直方图均衡化 4.代码实战 1.点算子 点算子是两个像素灰度值间的映射关系,属于像素的逐点运算,相邻像素不参与运算.点算子是最简单的图像处理手段,如:亮度调整.对比度调整.颜色变换.直方图均衡化等等. 2.线性灰度变换 线性灰度变换表达为: 其中rk.sk分别为输入.输出点像素灰度值. ▲图2.1 线性灰度变换 当a>1时,输出图像像素灰度范围扩大,图像对比度增强,当a<1时反之.这是因为人眼不易区分相近的灰度值,因此若图像灰度值范围较小,观感上细节不够

  • Python学习之包与模块详解

    目录 什么是 Python 的包与模块 包的身份证 如何创建包 创建包的小练习 包的导入 - import 模块的导入 - from…import 导入子包及子包函数的调用 导入主包及主包的函数调用 导入的包与子包模块之间过长如何优化 强大的第三方包 什么是第三方包 如何安装第三方包 总结 大家好,学完面向对象与异常处理机制之后,接下里我们要学习 包与模块 .首先我们要了解什么是包?什么是模块?接下来我们还要学习 如何自定义创建包.自定义创建模块以及如何导入包与模块.最后我们在学习如何使用第三方

  • Python读写JSON文件的操作详解

    目录 JSON JSON 起源 JSON 样例 Python 原生支持 JSON 序列化 JSON 简单的序列化示例 JSON 反序列化 简单的反序列化示例 应用案例 编码和解码 JSON JSON 起源 JSON 全称 JavaScript Object Notation .是处理对象文字语法的 JavaScript 编程语言的一个子集.JSON 早已成为与语言无关的语言,并作为自己的标准存在. JSON 样例 { "data":[ { "id": "1

  • Python学习之字符串函数使用详解

    目录 1 搜索字符串函数 2 设置字符串格式函数 3 改变字符串大小写函数 4 选定字符串函数 5 拆分字符串函数 6 替换字符串函数 Python的友好在于提供了非常好强大的功能函数模块,对于字符串的使用,同样提供许多简单便捷的字符串函数.Python 字符串自带了很多有用的函数,在字符串函数之前先介绍一个非常实用的dir()内置函数,因为对每一个初学者还是大佬级别的python程序员,都不能完全记住所有方法.而该函数可以查看所有这些函数,可调用 dir 并将参数指定为任何字符串(如 dir(

  • Python学习之模块化程序设计示例详解

    目录 关于模块化程序设计 水果仓库功能简介 主功能实现与程序入口 实现添加功能 实现列出所有信息功能 实现查询信息功能 实现删除信息功能 完整程序如下 关于模块化程序设计 什么是模块化程序设计? 程序设计的模块化指的是在进行程序设计时,把一个大的程序功能划分为若干个小的程序模块.每一个小程序模块实现一个确定的功能,并且在这些小程序模块实现的功能之间建立必要的联系,通过各个小模块之间的互相协作完成整个大功能实现的方法. 模块化设计程序的方法? 一般在针对实现比较复杂程序的情况下,采用的是自上而下的

  • Python学习之随机模块random详解

    目录 random.random() random.uniform() random.randint() random.choice() random.sample() random.randrange() random 模块 - 抽奖小案例 random 模块 - 双色球小案例 该章节我们来学习一下 Python 中非常简单但也非常有用的模块 —> random ,此模块主要用于生成随机数.接下面我们就来了解一下 random 模块中最常见的几种方法. random.random() 功能:随

  • C/C++实现segy文件的读取详解

    目录 1头文件ReadSeismic.h的编写及其规范 1.1程序描述.调用.声明.定义 1.2声明函数 1.3完整代码 2C++文件ReadSeismic.cpp的编写及其规范 2.1必要的说明 2.2定义读.写函数 2.3完整代码 3主函数main.cpp及运行结果 本文档将介绍SEGY的读取与写入过程,其中包括IBM与PC两种数据格式的转换. 程序将调用IEEE2IBM.cpp文件完成IBM与PC格式的互相转换. 新建头文件ReadSeismic.h与C++文件ReadSeismic.cp

  • Python学习之元组的使用详解

    目录 元组的创建 元组的删除 元组部分元素的输出 元组的嵌套 元组元素的个数计算:len() 元组中的元素最大最小值的求解:max(),min() 元组中某元素出现的次数:count函数 元组中某元素的索引:index(),返回的为下标值 元组元素值的修改:元组的元素值不能进行修改. 元组的创建 tuple=() #创建一个空元组 print(tuple) print(type(tuple)) 输出: ()<class 'tuple'> 定义只包含一个元素的元组:元素后面必须加逗号,否则编译器

随机推荐