Python 基础:文件
目录
- 一、从文件中读取数据
- 1.1 读取整个文件
- 1.2 逐行读取
- 二、写入文件
- 2.1 写入空文件
- 2.2 写入多行
- 2.3 附加到文件
遇到看不明白的地方,欢迎在评论中留言呐,一起讨论,一起进步!
本文参考:《Python编程:从入门到实践(第2版)》
一、从文件中读取数据
要使用文本文件中的信息,首先需要将信息读取到内存中。为此,我们可以一次性读取文件的全部内容,也可以以每次一行的方式逐步读取。
1.1 读取整个文件
首先我们准备一个文本文件 pi_digits.txt
下面打开并读取这个文件,再将其内容显示到屏幕上:
with open('pi_digits.txt') as file_object:contents = file_object.read()
print(contents)
“这个形式没见过呀 /(ㄒoㄒ)/~~”。别着急,我们逐个分解。
-
函数 open()
我们要记住,无论以任何方式使用文件,哪怕仅仅是打印其内容,都得先 打开文件,才能访问它!
函数 open() 接受一个参数:要打开的文件的名称(如上面的 pi_digits.txt,文件路径的内容可以参考博客:一篇文章搞懂Python的文件路径操作)
函数 open() 返回一个表示文件的对象,Python 将该对象赋给 as 之后的变量供以后使用(如上面的file_object
) -
关键字 with
我们要记住,打开了文件用过之后需要关闭!
虽然 open() 和 open() 搭配使用也可以,但是并非在任何情况下都能轻松确定关闭文件的恰当时机。而关键字 with 让我们只管打开文件,并在需要时使用它,Python 自会在合适的时候自动将其关闭。 -
文件对象.read()
有了表示文件对象后,使用方法 read() 来读取这个文件的全部内容,并将其作为一个长长的字符串进行返回。(上面用contents
来接受这个返回值,这样,通过打印contents
的值,就可将这个文本文件的全部内容显示出来)
1.2 逐行读取
要以每次一行的方式检查文件,可对文件对象使用 for 循环:
filename = 'pi_digits.txt'with open(filename) as file_object:for line in file_object:print(line.rstrip())
其中 rstrip()
来消除每一行每行末尾的换行符
使用关键字 with 时,open() 返回的文件对象只在 with 代码块内可用。 这就是为什么上面代码中要缩进。
如果非要在 with代码块外访问的话,可以先在 with 代码块内将文件的各行存储在一个列表中,并在 with 代码块外使用该列表。
下面的示例在 with 代码块中将文件 pi_digits.txt
的各行存储在一个列表中,再在 with 代码块外打印:
filename = 'pi_digits.txt'with open(filename) as file_object:lines = file_object.readlines()print(lines)
for line in lines:print(line.rstrip())
其中,readlines() 从文件中读取每一行,并将其存储在一个列表中。(注意和 1.1 中的 read() 区分)
二、写入文件
2.1 写入空文件
现在我们没有文件,执行下面这段代码:
filename = 'programming.txt'
with open(filename,'w') as file_object:file_object.write("I love programming.")
我们会发现目录中多了文件 programming.txt
我们在调用 open() 时需要提供两个实参,分别告诉 Python 要文件名和写的动作 'w'
。
打开文件时,可指定读取模式(
'r'
)、写入模式('w'
)、附加模式('a'
)或读写模式('r+'
)。
如果省略了模式实参,Python 将以默认的只读模式打开文件。
如果要写入的文件不存在,函数 open() 将自动创建它。
然而,以写入模式('w'
)打开文件时千万要小心,因为如果指定的文件已经存在,Python 将在返回文件对象前清空该文件的内容。
注意:Python 只能将字符串写入文本文件。要将数值数据存储到文本文件中,必须先使用函数 str() 将其转换为字符串格式。
2.2 写入多行
我们执行下面这段代码:
filename = 'programming.txt'with open(filename,'w') as file_object:file_object.write("I love programming.")file_object.write("I love creating new games.")
运行结果为:
并没有按照我们所期望的进行分行,这是因为函数 write() 不会在写入的文本末尾添加换行符。
要让每个字符串都单独占一行,需要在方法调用 write() 中包含换行符('\n'
):
filename = 'programming.txt'with open(filename,'w') as file_object:file_object.write("I love programming.\n")file_object.write("I love creating new games.\n")
这样执行结果为:
2.3 附加到文件
如果要给文件添加内容,而不是覆盖原有的内容,可以以附加模式('a'
)打开文件。以附加模式打开文件时。如果指定的文件不存在,Python 将创建一个空文件。
下面来修改代码,在既有文件 programming.txt
中再添加一些内容:
filename = 'programming.txt'with open(filename,'a') as file_object:file_object.write("I also love finding meaning in large datasets.\n")file_object.write("I love creating apps that can run in a browser.\n")
执行结果如下:
确实多了两行内容!
相关文章:
![](https://img-blog.csdnimg.cn/direct/404afa0e0e0441b7a2baf6e437264aed.png#pic_center)
Python 基础:文件
目录 一、从文件中读取数据1.1 读取整个文件1.2 逐行读取 二、写入文件2.1 写入空文件2.2 写入多行2.3 附加到文件 遇到看不明白的地方,欢迎在评论中留言呐,一起讨论,一起进步! 本文参考:《Python编程:从入…...
![](https://www.ngui.cc/images/no-images.jpg)
WebForms 母版页
WebForms 母版页 介绍 WebForms 母版页是 ASP.NET WebForms 应用程序中的一项功能,它允许开发人员创建一个包含页面布局和控件的模板,其他页面可以继承这个模板。使用母版页可以确保整个网站的一致性和减少重复代码。 如何创建母版页 在 Visual Stud…...
![](https://www.ngui.cc/images/no-images.jpg)
Java应用打包成Docker镜像
# 使用官方的OpenJDK17镜像作为基础镜像 FROM openjdk:17 # 设置工作目录 WORKDIR /app # 复制本地的Java应用程序文件到镜像中的指定目录 COPY target/bear-module-system-0.0.1-SNAPSHOT.jar /app/bear-module-system-0.0.1-SNAPSHOT.jar # 暴露API端口 EXPOSE 8888 …...
![](https://www.ngui.cc/images/no-images.jpg)
什么是自动驾驶中的CopyCat?
"CopyCat"这个词通常有两个含义: 字面意思:它可以指一个模仿别人的人,就像猫一样模仿其他猫的行为。在日常用语中,如果有人说某人是个"copycat",他们可能是在说这个人缺乏原创性,总是模仿别人的想法、风格或者行为。 心理学和犯罪学中的含义:在心…...
![](https://img-blog.csdnimg.cn/direct/15e27c40eba64e42a582a0093993a4c6.jpeg)
为什么没人详细说过智能猫砂盆?最受欢迎的好用智能猫砂盆解析!
不知道大家有没有发现,在快节奏的现代生活中,忙碌于上班的我们会发现自己越来越难以抽出足够的时间去细心照料自己的猫咪。每次下班回家,看到猫砂盆里堆积的粪便和尿液,自己都感到一阵头痛。这时,我开始考虑起智能猫砂…...
![](https://img-blog.csdnimg.cn/img_convert/55490b1a6612ad8bfa1f8694a66ae34c.jpeg)
AI视频智能监管赋能城市管理:打造安全有序的城市环境
一、方案背景 随着城市化进程的加速和科技的飞速发展,街道治安问题日益凸显,治安监控成为维护社会稳定和保障人民安全的重要手段。当前,许多城市已经建立了较为完善的治安监控体系,但仍存在一些问题。例如,监控设备分…...
![](https://img-blog.csdnimg.cn/direct/371a21ac1b06469e813cbbded5f83ac2.png)
多态性(Java)
本篇学习面向对象语言的第三个特性——多态。 目录 1、多态的概念 2、继承多态实现条件 3、重写 4、重新与重载的区别: 5、向上转移和向下转型 5、1向上转型: 5、2 向下转型 1、多态的概念 多态的概念:通俗来说,就是多种形态…...
![](https://img-blog.csdnimg.cn/direct/9d912d2073924bb6a080cf3abad0b495.jpeg)
国际期货行情相关术语
1)合约:期货行情表提供了期货交易的相关信息 ,行情表中每一个期货合约都有合约代码(由期货合约交易代码和合约到期月份组成)来标识。 (2)开盘价:当日某一期货合约交易开始前五分钟集…...
![](https://img-blog.csdnimg.cn/5dd4e44e98f74a9a940d698c0f6cd07b.png)
LeetCode20.有效的括号
题目描述 分析 我们刚上来的思路可能是:找出这三种括号的个数 如果都是偶数 说明匹配 但是这里还有一个顺序问题 比如 " )( "这样是不匹配的! 所以这种思路不可取! 我们想 如果遇到左括号,把他读到一个顺序表中&#…...
![](https://www.ngui.cc/images/no-images.jpg)
尚玩助手广告变现app开发
尚玩助手广告变现app的开发涉及到多个关键环节。首先,市场调研与定位是不可或缺的步骤,通过了解当前市场上流行的小游戏类型、用户偏好以及竞争对手的情况,来确定app的定位和目标用户群体。 其次,游戏设计与规划也是关键的一环&a…...
![](https://img-blog.csdnimg.cn/img_convert/adafbc10296404a3cbd2d92b2f966037.png)
Anti-human IL-10 mAb (12G8), biotin:Mabtech热销品
Anti-human IL-10 mAb (12G8), biotin该单克隆抗体能够在ELISpot、FluoroSpot和ELISA等免疫分析方法中特异性检测人白介素10(IL-10)。可以将该单克隆抗体12G8作为检测抗体与单克隆抗体9D7(ca#3430-3)作为捕获抗体配对用于ELISpot、…...
![](https://img-blog.csdnimg.cn/direct/366046a1a6e742b1b16d2c82e57dc59c.png)
【植物大战僵尸杂交版】致敬传奇游戏玩家——一个普通人的六年坚持
目录 缘起 波澜 凌云 缘起 曾佳伟是《植物大战僵尸》的忠实粉丝,这款游戏给了他很多乐趣,也成为了他度过困难时期的精神支柱。他决定制作杂交版,部分原因是出于对原版游戏的热爱和致敬。 六年前,出于对一些pvz续作…...
![](https://img-blog.csdnimg.cn/direct/3fdc1bec4c6f4205b6d3a0d646eb4d01.png)
【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 部门组队编程(200分) - 三语言AC题解(Python/Java/Cpp)
🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 …...
![](https://img-blog.csdnimg.cn/img_convert/d40694bcc1da16d58b52f1b11464ec4f.jpeg)
民生银行信用卡中心金融科技24届春招面经
本文介绍2024届春招中,中国民生银行下属信用卡中心的金融科技(系统研发方向) 岗位2场面试的基本情况、提问问题等。 2024年04月投递了中国民生银行下属信用卡中心的金融科技(系统研发方向) 岗位,暂时不清楚…...
![](https://img-blog.csdnimg.cn/img_convert/ca6e5cc639d67e5123d4b1f0dd92329f.png)
HTML李峋同款跳动的爱心代码(双爱心版)
目录 写在前面 跳动的爱心 完整代码 代码分析 系列推荐 最后想说 写在前面 在浩瀚的网络世界中,总有一些小惊喜能触动我们的心弦。今天,就让我们用HTML语言,探索既神秘又浪漫的李峋同款跳动的爱心代码吧。 首先,让我们一起…...
![](https://img-blog.csdnimg.cn/direct/97b451cb46144218ad94dbc85709f9fb.png)
【linux】内核从tcp层调用IP层摸索中
合入代码: 登录 - Gitee.comhttps://gitee.com/r77683962/linux-6.9.0/commit/f5a93955e16d148a70f98e0f300f455b3ab594f3 这是运行日志: https://gitee.com/r77683962/linux-6.9.0/raw/master/test_log/kern_tcp_ip.log 日志截取部分(也…...
![](https://www.ngui.cc/images/no-images.jpg)
Python 中的 Pandas(数据分析与处理)
Pandas 是 Python 中最受欢迎的数据处理库之一,其名字源自于“Panel Data”(面板数据)的缩写。它提供了三种主要的数据结构:Series , DataFrame , Panel(在新版本已经被弃用) 数…...
![](https://img-blog.csdnimg.cn/img_convert/b13fa87b3ef6cf2b75088e39fa0dd894.png)
【文档智能 RAG】RAG增强之路-智能文档解析关键技术难点及PDF解析工具PDFlux
前言 在私域知识问答和企业知识工程领域,结合Retrieval-Augmented Generation(RAG)模型和大型语言模型(LLM)已成为主流方法。然而,企业中存在着大量的PDF文件,PDF解析的低准确性显著影响了基于…...
![](https://www.ngui.cc/images/no-images.jpg)
五大API接口:提升你的应用性能与用户体验
引言: 简述API接口的重要性引入API接口对于提升应用性能和用户体验的贡献 API接口简介: 定义:解释什么是API接口作用:概述API接口在软件开发中的作用 1. 数据访问API 功能描述:提供快速、安全的数据存取功能提升性…...
![](https://img-blog.csdnimg.cn/direct/05396d35b5d84191992b3919d4e1267d.png)
RabbitMQ实践——在Ubuntu上安装并启用管理后台
大纲 环境安装启动管理后台 RabbitMQ是一款功能强大、灵活可靠的消息代理软件,为分布式系统中的通信问题提供了优秀的解决方案。无论是在大规模数据处理、实时分析还是微服务架构中,RabbitMQ都能发挥出色的性能,帮助开发者构建高效、稳定的系…...
![](https://www.ngui.cc/images/no-images.jpg)
Ubuntu中防火墙的使用 和 开放 关闭 端口
目录 1.查看防火墙的状态 2.开启ufw防火墙 3.重启ufw防火墙 4.关闭ufw防火墙 5.设置外来访问默认权限 6.开放普通端口 7.关闭普通端口 8.开放规定协议的端口 9.关闭指定协议端口 10.重启防火墙,是配置生效 1.查看防火墙的状态 sudo ufw status 2.开启uf…...
![](https://img-blog.csdnimg.cn/direct/e52eb55c22b54c15920a9ff46984506c.png)
ansible 模块进阶及变量
yum 模块进阶 - name: install pkgs hosts: webservers tasks: - name: install web pkgs # 此任务通过yum安装三个包 yum: name: httpd,php,php-mysqlnd state: present # 根据功能等,可以将一系列软件放到一个组中,安装软件包组,将会把很…...
![](https://img-blog.csdnimg.cn/direct/a6c9f9bf6b5144378f3076096cd670fb.png)
MYSQL数据库安装
一.编译安装MySQL服务 1.安装环境依赖包 2.将安装mysql 所需软件包传到/opt目录下 mysql-boost-5.7.44.tar tar zxvf mysql-boost-5.7.44.tar.gz 3.配置软件模块 cd /opt/mysql-5.7.44/ cmake \ -DCMAKE_INSTALL_PREFIX/usr/local/mysql \ -DMYSQL_UNIX_ADDR/usr/local/mysq…...
![](https://www.ngui.cc/images/no-images.jpg)
Pycharm配置远程调试
第1步:添加SSH Inerpreter 打开Settings --> Project interpreter配置项,配置如下两项 Project Interpreter添加SSH inerpreter 首次使用的远程环境需要填写ip及账号密码,建立ssh连接,然后选择对应的远端python路径 Path mapp…...
![](https://img-blog.csdnimg.cn/direct/4ba71817e99b42e48d2625f2b9801ced.png)
【Java面试】二十二、JVM篇(下):JVM参数调优与排查
文章目录 1、JVM的参数在哪里设置2、常见的JVM调优参数有哪些3、常见的JVM调优工具有哪些4、Java内存泄漏的排查思路5、CPU飙高的排查思路 1、JVM的参数在哪里设置 war包部署,在tomcat中设置,修改TOMCAT_HOME/bin/catalina.sh 文件 jar包启动࿰…...
![](https://img-blog.csdnimg.cn/direct/799f2c0b9f8f427988c9263dd82a779c.png)
统计信号处理基础 习题解答10-17
题目: 在选择不含信息的或者不假设任何先验知识的先验PDF时,我们需要从数据中得到最大的信息量。在这种方式下,数据是了解未知参数的主要贡献者。利用习题10.15的结果,这种方法可以通过选择使I最大的来实现。对于例10.1的高斯先验PDF,该如何选择和2使得 是不含信息…...
![](https://www.ngui.cc/images/no-images.jpg)
嵌套使用模板类
#include<iostream> using namespace std;template <class Datatype> class Stack { private:Datatype* items;//栈数组int stacksize;//栈的实际大小int top;//栈顶指针 public://构造函数:1)分配栈数组内存,2)把栈顶…...
![](https://img-blog.csdnimg.cn/direct/fe4b7c9dc86a44789e8db12f72d06c14.png)
adb卸载系统应用
1.进入shell adb shell2.查看所有包 pm list packages3.查找包 如查找vivo相关的包 pm list packages | grep vivo发现包太多了,根本不知道哪个是我们想卸载的应用 于是可以打开某应用,再查看当前运行应用的包名 如下: 4.查找当前前台运行的包名 打开某应用,在亮屏状态输入 …...
![](https://img-blog.csdnimg.cn/direct/1646c6a2f4b74e26a645cbe8ddfc2d43.png)
Rapidfuzz,一个高效的 Python 模糊匹配神器
目录 01初识 Rapidfuzz 什么是 Rapidfuzz? 为什么选择 Rapidfuzz? 安装 Rapidfuzz 配置 Rapidfuzz 02基本操作 简单比率计算 03高级功能 查找单个最佳匹配 查找多个最佳匹配 使用阈值优化性能 04实战案例…...
![](https://img-blog.csdnimg.cn/direct/131f95d0184042579bda6dd0d13c36f0.png)
【猫狗分类】Pytorch VGG16 实现猫狗分类1-数据清洗+制作标签文件
Pytorch 猫狗分类 用Pytorch框架,实现分类问题,好像是学习了一些基础知识后的一个小项目阶段,通过这个分类问题,可以知道整个pytorch的工作流程是什么,会了一个分类,那就可以解决其他的分类问题࿰…...
![](https://s1.51cto.com/images/blog/201804/30/78fffcd006254356e8f2f86fc2c18b39.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
做视频商用模板哪个网站靠谱/系列推广软文范例
一.反射定义放射是指程序可以访问。检测和修改它本身状态或行为的一种能力(自省)。二.四个自省的函数Python中提供了以下四种自省的函数,使用于类和对象。1.hasattr函数--用于判断obj中有没有name字符串对应的方法或属…...
![](https://img-blog.csdnimg.cn/20181101165545870.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTAwMDM4MzU=,size_16,color_FFFFFF,t_70)
做外贸哪几个网站好/中国互联网数据平台
参考文章: flume kafka sparkstreaming整合后集群报错org.apache.kafka.clients.consumer.KafkaConsumer.subscribe(Ljava/ut https://blog.csdn.net/u010936936/article/details/77247075?locationNum2&fps1 最近在使用CDH 环境 提交 Kafka-Spark Streaming…...
![](/images/no-images.jpg)
成都网站/网络宣传渠道
http://www.iteye.com/news/31504...
![](/images/no-images.jpg)
校园 网站建设 知乎/优化网站建设seo
JQuery元素外增加元素的方法,从JQuery1.4起,部分方法可以接受一个函数作为参数。 传入after/before中作为参数的函数有两个,一个是JQuery1.4新增的,接受一个参数,为当前元素在选中的元素集中的位置索引,索…...
![](/images/no-images.jpg)
备案网站应用服务/seo专业培训班
//这是一个在参数指定文件中连续写入当前时间的应用//文件以1秒为时间间隔,将当前的时间写入文件,然后回车换行//这是一个使用lseek在一个文件中连续写入字符串的应用#include #include #include #include int main(int argc,char *argv[]){int temp,see…...
![](https://www.oschina.net/img/hot3.png)
做网站到内容填充需要多久/百度新闻官网首页
为什么80%的码农都做不了架构师?>>> 1984福尔摩斯S01(7)解压密码ijk Friends老友记word密码ijk Sherlock神探夏洛克S01解压密码ijk Yes.Minister是大臣S01解压密码ijk 绝望主妇中英word字幕S01解压密码ijk 权利的游戏第一季中英word字幕S01解压密码ijk …...