python 文件读取

article/2025/8/8 7:13:08
  • 读取整个文件
    操作文件的第一步就是得打开要操作的文件,然后进行读取。在python中我们可以使用open函数来打开一个文件,然后使用read方法来读取文件。

示例:

import oswith open('data.txt', encoding='utf-8') as file_obj:contents = file_obj.read()print(contents.rstrip())

首先,我们看下open函数的定义:

def open(file: Union[str, bytes, int], mode: str = ..., buffering: int = ..., encoding: Optional[str] = ...,              errors: Optional[str] = ..., newline: Optional[str] = ..., closefd: bool = ...) Inferred type: (file: Union[str, bytes, int], mode: str, buffering: int, encoding: Optional[str], errors: Optional[str], newline: Optional[str], closefd: bool) -> IO Open file and return a stream. Raise IOError upon failure. 

在一般情况下,我们打开文件只需要传入文件路径即可,这里我们读取的文件的内容是中文,为了避免乱码,我们在这里指定了编码格式。其他的参数等我们用到的时候,在仔细说明。

open函数返回一个表示文件的对象,python会将这个对象存储在我们的变量file_obj中,这样我们就可以方便的操作了。

data.txt和我们的文件在同一目录下,所以直接使用名称即可:
这里写图片描述

如果是其他路径(非程序目录),那么直接使用绝对路径:
我是在window的开发环境,以windows为例:

file_path = 'D:\data.txt'
with open(file_path, encoding='utf-8') as file_obj:

read()方法读取文件的整个内容,并将其作为字符串返回。

其他的我们先不做说明,先来看下文件运行结果,是否将文件内容成功读取:
这里写图片描述

虽然我们的文本有点多,大家可以仔细看一下,就当回味一下高中生活了。

有些仔细一点的朋友可能发现了,这里我们只是使用了open和read来打开和读取文本文件,但是并没有关闭文件句柄,这一点有点奇怪,我们在其他的语言open和close总是成双成对的出现的。

这里的奥妙就在于with关键字,使用该关键字可以让python去确定,我们在不需要访问文件的时候自动关闭文件。也就是说我们只需要打开和操纵文件,python会在合适的机会关闭文件。

我们在将文件打开后,打印一下这个file_obj到底有些什么:

 print(dir(file_obj))

输出:

['_CHUNK_SIZE', '__class__', '__del__', '__delattr__', '__dict__', '__dir__', '__doc__', '__enter__', '__eq__', '__exit__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '_
_init_subclass__', '__iter__', '__le__', '__lt__', '__ne__', '__new__', '__next__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '_checkClosed', '_checkReadable','_checkSeekable', '_checkWritable', '_finalizing', 'buffer', 'close', 'closed', 'detach', 'encoding', 'errors', 'fileno', 'flush', 'isatty', 'line_buffering', 'mode', 'name', 'newlines', 'read', 'readable', 'readline',
'readlines', 'seek', 'seekable', 'tell', 'truncate', 'writable', 'write', 'writelines']

这些都是和文件操作相关的,在这里不会给大家做仔细说明,只是让大家对这些东西有个印象,等遇到了,我们在说怎么使用。

  • 逐行读取
    上面是读取整个文件内容,接下来我们看下怎么逐行读取文件,为了方便演示,我们将data的内容修改为几行数字。

在逐行读取文本的时候,常见的可以使用for循环来读取:

with open(file_path, encoding='utf-8') as file_obj:for line in file_obj:print(line)

还有就是使用readline方法来逐行读取文件:

with open(file_path, encoding='utf-8') as file_obj:line = file_obj.readline()while line != '':print(line)line = file_obj.readline()

另外一种倒像是第二种的升级版,它会一次性的将文件逐行读取存入一个列表中,一遍我们使用:

with open(file_path, encoding='utf-8') as file_obj:lines = file_obj.readlines()for line in lines:print(line)

lines 在代码块with之外也是可以使用的。

说了几种常见的使用方法,我们来看下程序运行输出:

D:\Programs\python\HelloWorld\venv\Scripts\python.exe D:\Programs\python\HelloWorld\python_file.py
1234234534564567Process finished with exit code 0

大家可以看到,我们读取的数据没有任何问题,但是每行数据之间都会存在多余的空行,这是因为在文件中每行的末尾都会有一个看不见的换行符。如果我们希望去除这些多余空行,可以使用rstrip()函数:

def rstrip(self, chars: Optional[str] = ...) Inferred type: (self: str, chars: Optional[str]) -> str 
S.rstrip([chars]) -> str
Return a copy of the string S with trailing whitespace removed. If chars is given and not None, remove characters in chars instead.

那么上面的例子我们该这么修改:

with open(file_path, encoding='utf-8') as file_obj:lines = file_obj.readlines()for line in lines:print(line.rstrip())

输出:

1234
2345
3456
4567

http://chatgpt.dhexx.cn/article/5RseAa0a.shtml

相关文章

matlab中如何对一个小数取整,学习笔记153—matlab中小数如何取整?

matlab中小数取整的函数大约有四个:floor、ceil、round、fix 1、round取整方法是四舍五入 round函数功能:四舍五入取整。 使用方法:B round(A) 对数组A中每个元素朝最近的方向取整数部分,并返回与A同维的整数数组B,对…

建立一个植物毒性分类器:数据准备和清理

作者|Kenichi Nakanishi 编译|VK 来源|Towards Data Science 我有一个爱买植物的未婚妻,还有一只爱啃植物的猫——我想,有什么比把一个能告诉我植物是否安全的分类器更好呢! 需要注意的一点是,这里所做的所有工作都是在google colabs上完成的,使用的notebook可以在我的Gi…

我在百度Python小白逆袭大神课程中“打怪”欢乐之旅

本文描述了作者在参加百度Python小白逆袭大神课程一些亲身经历,从开始的半信半疑,到最后坚定的革命信念,给没有参加过百度课程的同学一点参考,文中有高质量的数据分析、pyecharts动态图,深度学习相关代码分享&#xff…

彻底解决Chrome浏览器劫持后显示“由贵单位管理(Managed by your organization)” 的解决办法

声明: Declaration: 由于网络中的病毒virus/malware等存在随时变异或者对应多种感染方式等情况,本文所针对的处理方法仅针对本次样本负责,个人如有误操作,后果自负。如需帮助,可以关注我的公众号&#xff…

Python sklearn学习之数据预处理——非线性转换

Python sklearn学习之数据预处理——非线性转换 文章目录 Python sklearn学习之数据预处理——非线性转换1. 两种常见的非线性转换1.1 分位数转换1.2 幂变换 2. sklearn中非线性变换的实现2.1 映射到均匀分布2.1.1QuantileTransformer类 2.2 映射到高斯分布2.2.1 Yeo-Johnson t…

javaScript学习笔记【尚硅谷】

javaScript学习笔记【尚硅谷】 这是我在看尚硅谷的前端大神超哥视频时,所记录的笔记! 文章目录 javaScript学习笔记【尚硅谷】[TOC](文章目录)1、javaScript基本知识1.2、JS编写位置1.3、JS基本语法1.4、变量与字面量1.5、标识符1.6、数据类型1.6.1、Nu…

机器学习流程及详细内容(1)

一般流程:数据收集、整理→数据预处理与特征工程(数据清理、集成、规约、变换、特征提取、筛选)→模型的选择与建立→模型的评估与优化。 数据收集 既可以使用公开的数据集,也可通过爬虫、购买或者实时数据的方式自己收集。 UC…

机器学习(Machine Learning)与深度学习(Deep Learning)资料汇总

《Brief History of Machine Learning》 介绍:这是一篇介绍机器学习历史的文章,介绍很全面,从感知机、神经网络、决策树、SVM、Adaboost到随机森林、Deep Learning. 《Deep Learning in Neural Networks: An Overview》 介绍:这是瑞士人工智能实验室Jurg…

Flutter 学习

Flutter 学习 参照:https://book.flutterchina.club/ 参照:https://flutter.cn/docs/development/platform-integration/platform-channels?tabtype-mappings-java-tab 目前进度:https://book.flutterchina.club/chapter9/animated_widgets…

原生开发如何学习 Flutter | 谷歌社区说

Hello 大家好,我是《Flutter 开发实战详解》的作者,Github GSY 系列开源项目的负责人郭树煜,目前开源的 gsy_github_app_flutter 以 13k 的 star 在中文总榜的 dart 排行上暂处第一名。 数据来源: https://github.com/GrowingGit/…

【CVRP】基于matlab遗传算法求解带容量的车辆路径规划问题【含Matlab源码 162期】

⛄一、VRP简介 车辆路径问题(VRP)最早是由 Dantzig 和 Ramser 于1959年首次提出,它是指一定数量的客户,各自有不同数量的货物需求,配送中心向客户提供货物,由一个车队负责分送货物,组织适当的行…

matlab解决LRP类型的多配送中心路径优化问题

** 问题描述 ** 有关多配送中心的选址-路径优化问题,一般是通过基于区域内的客户需要求,对配送中心进行合理的选址以及配送中心的车辆调度以及路径优化。在给出的配送中心候选点位置已知,需要在给出的这些位置中,通过与顾客需求…

<代码分享> 一种无人机配合卡车配送的车辆路径规划模型

本文为本人博客《一种无人机配合卡车配送的车辆路径规划模型》的代码分享。 由于近期此文的关注者较多,代码分享较为不便,因此决定专门写一篇博客以提供源码。 感谢各位博友关注,本人能力有限,如有错误,还请及时批评指…

(附源码)springboot车辆管理系统 毕业设计031034

车辆管理系统的设计与实现 摘 要 科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流,人类发展的历史正进入一个新时代。在现实运用中&…

QT+SQL Server实现车辆管理系统 -代码具体实现

QTSQL Server 实现车辆管理系统 -代码具体实现 1.摘要2.整体框架3.具体代码实现3.1 连接数据库3.2 登录操作3.3 申请账户3.4 添加车辆信息3.5 查询车辆信息3.6删除车辆信息3.7修改车辆信息3.8 添加司机信息 4.总结5.资源下载链接 1.摘要 前面一篇文章简要介绍了车辆管理系统的…

如何使用低代码进行车队管理?

处理任何业务都具有挑战性,但车队管理无疑是所有业务中的佼佼者。无论是司机短缺、环境问题、国际法规还是行业不稳定,车队经理都必须面对这一切。除此之外,还有数字化和路线优化的概念。数字化转型车队管理业务意味着消除挑战,拥…

车辆自然驾驶轨迹数据集/交通流数据介绍

文章目录 NGSIMNGSIM 概览快速路车道选择算法Interstate 80 Freeway 数据集Lankershim Boulevard 数据集US highway101数据集动态交通分配DTACORSIM Argoverse Motion Forecasting DatasetAIMSUNHighDITS DataHub 美国智能交通数据库Data.govPeMSPortland Oregon Region data英…

3D车辆检测AP评价指标代码的理解

课题研究的是单目3D车辆的识别,采用的目标检测网络是SMOKE,为了可以更好的定量评测训练模型的性能,需要使用到合理的评测指标,目前比较流行的评测指标是得到多组precision和recall值画出PR曲线,然后计算PR曲线下的面积…

根据车辆型号自动生成车辆编号

开发工具与关键技术:Visual Studio 2015 linq 正则 作者:孙水兵 撰写时间:2019年6月26一、 功能 根据不同的类型的车辆型号,生成以车辆型号开头的车辆编号。 二、 达到的效果 用户选择了车辆型号之后,将对应的车辆编…

【路径规划】基于遗传算法求解多车多类型车辆的车辆路径优化问题附matlab代码

1 内容介绍 多车辆多路线的交通路线优化涉及到排序问题,是一个N-P难题,高效精确的算法存在的可能性不大.提出了基于遗传算法的求解方法,给出了实例来证明如何利用遗传算法解决多车辆多路线的优化问题.结果证明,一般情况下利用遗传算法对于多车辆多路线的行车路线优化能得到一组…