当前位置: 首页 > news >正文

写入文件内容

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm=1001.2014.3001.5501

在实例01中,虽然创建并打开一个文件,但是该文件中并没有任何内容,它的大小是0KB。Python的文件对象提供了write()方法,可以向文件中写入内容。write()方法的语法格式如下:

file.write(string)

其中,file为打开的文件对象;string为要写入的字符串。

注意:在调用write()方法向文件中写入内容的前提是在打开文件时,指定的打开模式为w(可写)或者a(追加),否则,将抛出如图7所示的异常。

图7  没有写入权限时抛出的异常

场景模拟:在蚂蚁庄园的动态栏目中记录着庄园里的新鲜事。在给小鸡喂食后,使用了一张加速卡,此时,需要向庄园的动态栏目中写入一条动态。

图标 (35)

  实例02  向蚂蚁庄园的动态文件写入一条信息

在IDLE中创建一个名称为antmanor_message_w.py的文件,然后在该文件中,首先应用open()函数以写方式打开一个文件,然后再调用write()方法向该文件中写入一条动态信息,再调用close()方法关闭文件,代码如下:

print("\n","="*10,"蚂蚁庄园动态","="*10)

file = open('message.txt','w')         # 创建或打开保存蚂蚁庄园动态信息的文件

# 写入一条动态信息

file.write("你使用了1张加速卡,小鸡撸起袖子开始双手吃饲料,进食速度大大加快。\n")

print("\n 写入了一条动态……\n")

file.close()                      # 关闭文件对象

执行上面的代码,将显示如图8所示的结果,同时在antmaner_message_w.py文件所在的目录下创建一个名称为message.txt的文件,并且在该文件中写入了文字“你使用了1张加速卡,小鸡撸起袖子开始双手吃饲料,进食速度大大加快”,如图9所示。

图8  创建并打开记录蚂蚁庄园动态的文件

图9  打开记录蚂蚁庄园动态的文件

注意:在写入文件后,一定要调用close()方法关闭文件,否则写入的内容不会保存到文件中。这是因为当我们在写入文件内容时,操作系统不会立刻把数据写入磁盘,而是先缓存起来,只有调用close()方法时,操作系统才会保证把没有写入的数据全部写入磁盘。

多学两招:在向文件中写入内容后,如果不想马上关闭文件,也可以调用文件对象提供的flush()方法,把缓冲区的内容写入文件,这样也能保证数据全部写入磁盘。

向文件中写入内容时,如果打开文件采用w(写入)模式,则先清空原文件中的内容,再写入新的内容;而如果打开文件采用a(追加)模式,则不覆盖原有文件的内容,只是在文件的结尾处增加新的内容。下面将对实例02的代码进行修改,实现在原动态信息的基础上再添加一条动态信息。修改后的代码如下:

print("\n","="*10,"蚂蚁庄园动态","="*10)

file = open('message.txt','a')    # 创建或打开保存蚂蚁庄园动态信息的文件

# 追加一条动态信息

file.write("mingri的小鸡在你的庄园待了22分钟,吃了6g饲料之后,被你赶走了。\n")

print("\n 追加了一条动态……\n")

file.close()                    # 关闭文件对象

执行上面的代码后,打开message.txt文件,将显示如图10所示的结果。

图10  追加内容后的message.txt文件

多学两招:在Python的文件对象中除了提供了write()方法,还提供了writelines()方法,可以实现把字符串列表写入文件,但是不添加换行符。

相关文章:

  • 软件架构x86 、 x86_64、 arm64、aarch64
  • 【MySQL数据库】my.ini文件参数中文注释
  • 大疆智图_空三二维重建成果传输
  • Java finally catch try关键字
  • 反转链表 (oj题)
  • C++中的sizeof和strlen详解
  • 【玩转C语言】第三讲---> scanf 和 printf 函数详解(非常重要)!
  • Redisson知识
  • 斯坦福天才少女创5亿独角兽!Pika获8000万融资,金牌团队首曝光
  • 小主机折腾记24
  • 计算机基础(8)——音频数字化(模电与数电)
  • WPF中读取Excel文件的内容
  • 利用keepalived对zabbix-server做高可用,部署安装keepalived
  • 【WEB前端2024】智体OS:poplang编程控制成本小千元的长续航robot机器人底盘(开源)
  • C语言——内存函数
  • 深入了解以太坊
  • android百种动画侧滑库、步骤视图、TextView效果、社交、搜房、K线图等源码
  • Electron入门介绍
  • ERLANG 网工修炼笔记 ---- UDP
  • JDK 6和JDK 7中的substring()方法
  • LeetCode算法系列_0891_子序列宽度之和
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • nginx 配置多 域名 + 多 https
  • vue数据传递--我有特殊的实现技巧
  • 表单中readonly的input等标签,禁止光标进入(focus)的几种方式
  • 前嗅ForeSpider中数据浏览界面介绍
  • 实习面试笔记
  • 使用iElevator.js模拟segmentfault的文章标题导航
  • 正则与JS中的正则
  • ​​​【收录 Hello 算法】9.4 小结
  • ​【经验分享】微机原理、指令判断、判断指令是否正确判断指令是否正确​
  • ​2020 年大前端技术趋势解读
  • ​LeetCode解法汇总2583. 二叉树中的第 K 大层和
  • #{}和${}的区别是什么 -- java面试
  • #《AI中文版》V3 第 1 章 概述
  • #设计模式#4.6 Flyweight(享元) 对象结构型模式
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作...
  • (day18) leetcode 204.计数质数
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (STM32笔记)九、RCC时钟树与时钟 第二部分
  • (论文阅读23/100)Hierarchical Convolutional Features for Visual Tracking
  • (十三)Flink SQL
  • (已解决)vue+element-ui实现个人中心,仿照原神
  • (转)创业家杂志:UCWEB天使第一步
  • .bat批处理(三):变量声明、设置、拼接、截取
  • .Net 4.0并行库实用性演练
  • .NET CORE 2.0发布后没有 VIEWS视图页面文件
  • .NET 解决重复提交问题
  • .net 使用$.ajax实现从前台调用后台方法(包含静态方法和非静态方法调用)
  • .NET 中让 Task 支持带超时的异步等待
  • ?
  • @SuppressWarnings注解
  • [ NOI 2001 ] 食物链
  • [ Python ]使用Charles对Python程序发出的Get与Post请求抓包-解决Python程序报错问题