一日一技:print函数也能写文件
时间:2022-06-21
本文章向大家介绍一日一技:print函数也能写文件,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
在Python里面,当我们要把一段字符串写入到一个文件里面时,我们会这样写:
with open('text.txt', 'w', encoding='utf-8') as f: f.write('我是一段文本')
或者有人不习惯 with
上下文管理,可能会这样写代码:
f = open('text.txt', 'w', encoding='utf-8')f.write('我是一段文本')f.close()
如果我们的代码需要在多个地方写文件,那么每次使用上下文管理确实稍显费时间。
虽然也可以把写文件的操作封装到一个函数里面,不过实际上Python 3的 print
函数就能够直接写文件:
f = open('text.txt', 'w', encoding='utf-8')
print('我是一段字符串', file=f)print('我是第二段内容', file=f)print('我是第三段内容', file=f)
f.close()
运行效果如下图所示。
这个时候可能有人会说,你这样确实写到文件里面了,可是屏幕上又不显示了啊。我想既在屏幕上显示,又写入文件怎么做呢?
print
函数的 file
参数,可以接受任何一个带有 write
方法的对象。所以我们可以写一个既打印在屏幕,又写入文件的类:
class print_and_write: def __init__(self, file_name): self.f = open(file_name, 'w', encoding='utf-8')
def write(self, text): print(text) self.f.write(text)
def close(self): self.f.close()
f = print_and_write('text.txt')print('第一段', file=f)print('第二段', file=f)print('第三段', file=f)
运行效果如下图所示。
这个时候,有人会问,你写了这么大一堆,我用一个函数3行代码就能搞定:
def print_and_write(file_name, text): print(text) with open(file_name, 'a', encoding='utf-8') as f: f.write(text)
那么你这种方式与我通过函数来实现的方式有什么区别?
我认为,最主要的区别在于扩展性。当你定义一个函数来既显示到屏幕上,又写入文件的时候。如果现在希望把这个内容再发送到一个HTTP服务中,那么你就需要修改这个函数。随着需求量的增大,你这个函数会越来越复杂。你不得不在这个函数里面调用更多的函数来分离各个功能。
那么,新的这些函数应该如何管理?
而当我使用一个含有 write
方法的类,并配合 print
函数的 file
关键字来实现这个功能的时候,我可以通过这个类把相关的功能全部整合起来,封装成一个专门的模块,从而隐藏调用的细节。对外暴露的只有这个print_and_write对象的实例,而不需要额外写出它的任何方法。
而在代码的调用层,能够看到的就是带有 file
关键字的 print
函数,这样代码会显得非常简洁。
- 教你如何去掉友荐和无觅的隐藏外链和版权链接
- 重置多说配置后的问题,这是不让我从良的节奏啊(附禁用谷歌在线字体的方法)!
- 10个超有趣的Linux命令
- 张戈博客惊现WordPress恶意代码,各位WP博主要注意下了!
- 分享一个多说头像的动态酷炫CSS样式
- 在Linux中发现IP地址冲突的方法
- 教你如何查看Linux的CPU负载
- 想打造一个神经网络,自动给黑白照片上色?这儿有一份超详细教程
- WP_Widget_PostViews has a deprecated constructor 报错解决
- 详解Linux系统的CPU负载均值
- Linux服务器的进程查看命令详解
- 另类SEO分享:利用JS封装iframe躲过搜索引擎的抓取
- Linux :MAC 地址克隆方法
- 解决WordPress修改数据库表前缀后无法登陆的问题
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 动态气泡图,拿走不谢!
- 刷爆全网的动态条形图,原来5行Python代码就能实现!
- Vue框架av88732281笔记
- iOS-组件化(OC篇)
- Angular async pipe在html模板中的一个实际应用
- 3D引擎中LOD技术的理论基础
- one-hot encoding不是万能的,这些分类变量编码方法你值得拥有
- 【5分钟玩转Lighthouse】爬取JavaScript动态渲染页面
- 科技爱好者周刊(第 127 期):未来人人开发软件,几乎没人编码
- mac快捷键
- 浅谈Kotlin的Checked Exception机制
- 自研网关:特殊URL功能的开发
- centos7多网卡配置
- vuecli3 build之后静态文件出现404
- Muti-Similarity Loss:考虑了batch中整体距离分布的对比损失函数