Python入门知识点分享——(九)文件的input/output方法

首先对昨天介绍的open函数做一点补充,可以用with open的方式打开文件,这种方式可以省略close,防止资源泄露或数据丢失。这个方法依托的原理是上下文管理器,我们会在之后的文章中讲到。

with open('word_work.txt',  mode='r', encoding='UTF-8') as fp:print(fp.read())
  If we have chosen the position in life in which
we can most of all work for mankind, no burdens
can bow us down, because they are sacrifices 
for the benefit of all; then we shall experience
no petty, limited, selfish joy, but our happiness
will belong to millions, our deeds will live on
quietly but perpetually at work, and over our
ashes will be shed the hot tears of noble people.

我们可以使用fp.closed来判断文件是否被关闭,它会返回一个布尔值。另外我们也可以通过fp.name/mode读取open函数中的参数,这样可以避免我们不小心清空或覆盖了其他文件。

with open('word_work.txt',  mode='r', encoding='UTF-8') as fp:print(fp.name)print(fp.mode)print(fp.closed)
print(fp.closed)
word_work.txt
r
False
True

根据输出的结果,可以确认with open用法会自动关闭文件 。

下面是今天的重点——文件的 I/O 函数,其实我们刚刚介绍过的open函数,以及先前见过的print、close都属于文件的输入输出函数,这篇文章主要是进行归纳补充。 

print

最简单的输出方法是用print语句打印到屏幕,把输入的表达式转换成一个完整的字符串。

print("one", "two", "three", sep=" ")
# sep表示分隔符,可以是空格也可以是其他字符
print("one", "two", "three", sep="|")
print("name %s age %d" % ("alan", 11))
# %s作为字符串的占位符,而%d则是整型的占位符
name = "alan"
age = 11
print("name %s age %d" % (name, age))
# 用变量的形式也可以
one two three
one|two|three
name alan age 11
name alan age 11

input

input函数被用来读取键盘输入的文本,因为在Python中默认的标准输入是键盘。

question = input("请输入你的问题:")
print("你的问题是:", question)
请输入你的问题:你好吗
你的问题是: 你好吗

input函数常与print搭配形成交互,此外还可以使用split函数切分input返回的字符串从而得到一个列表。

question = input("请输入你的问题:")
print("你的问题是:", question, type(question))
print("你的问题是:", question.split(" "))
# 按照空格切分
请输入你的问题:1 2 3 4 5
你的问题是: 1 2 3 4 5 <class 'str'>
你的问题是: ['1', '2', '3', '4', '5']

close

文件的 close()方法会刷新缓冲区,并关闭该文件,这之后无法对该文件进行读写操作。

with open('word_work.txt',  mode='r', encoding='UTF-8') as fp:print(fp.readline())
print(fp.closed)
print(fp.name)
print(fp.mode)
print(fp.readline())
True
word_work.txt
r
ValueError: I/O operation on closed file.

 我们仍然能获取文件的一些属性,但是无法对里面的内容进行操作了。

write

write()方法可将任何字符串写入一个打开的文件,要在open函数中设置为可编写的形式。如果想要达成补充内容的效果,需配合seek定位函数使用。

fp = open('word_work2.txt',  mode='w+')
# 没有查找的该文件名,就会创建新文件并命名
fp.write("Karl")
fp.close()
fp = open('word_work2.txt',  mode='r')
print(fp.read())
fp.close()
fp = open('word_work2.txt',  mode='a+')
fp.seek(0, 2)
'''file.seek(offset[, whence])
offset:开始的偏移量,也就是代表需要移动偏移的字节数,如果是负数表示从倒数第几位开始。
whence:可选,默认值为 0。给 offset 定义一个参数,表示要从哪个位置开始偏移;0 代表从文件开头开始算起,1 代表从当前位置开始算起,2 代表从文件末尾算起。'''
fp.write("Marx")
fp.seek(0, 0)
# 指针移回开头
fp.close()
fp = open('word_work2.txt',  mode='r')
print(fp.read())
fp.close()
Karl
KarlMarx

read

read()方法从一个打开的文件中读取文本示例,输出的结果为字符串。

fp = open('word_work2.txt',  mode='r')
print(type(fp.read()))
fp.close()
<class 'str'>

tell

tell()方法输出文件内的当前位置,配合seek函数使用。

fp = open('word_work2.txt',  mode='r')
print(fp.tell())
fp.seek(0, 2)
print(fp.tell())
fp.seek(0, 0)
print(fp.tell())
fp.close()
0
8
0

再加上之前介绍的open函数就是文件全部的input/output方法了,之后会和大家分享OS的目录文件方法,谢谢大家。

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/484184.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

线程知识点(一)—— 程序、进程、线程之间的区别与联系、Java的线程状态和生命周期

1 程序、进程、线程之间的区别与联系 三者之间的形象化理解&#xff1a; * 程序&#xff1a;代码实现了功能&#xff0c;就是程序&#xff0c;是静态的&#xff1b; * 进程&#xff1a;执行中的程序就是进程&#xff0c;是动态的&#xff1b; * 线程&#xff1a;进程内的一个执…

官方全面解读“5G+工业互联网”

来源&#xff1a;工信部网站未来智能实验室的主要工作包括&#xff1a;建立AI智能系统智商评测体系&#xff0c;开展世界人工智能智商评测&#xff1b;开展互联网&#xff08;城市&#xff09;大脑研究计划&#xff0c;构建互联网&#xff08;城市&#xff09;大脑技术和企业图…

为什么要学数学?因为这是一场战略性的投资

来源&#xff1a;数学内参如果将数学学习的好坏仅仅理解为“刷题”的数量和速度&#xff0c;那充其量也只能成为一名熟练的数学工匠。我们所受的数学训练&#xff0c;所领会的数学思想和精神&#xff0c;所获得的数学教养&#xff0c;无时无刻不在发挥着积极的作用&#xff0c;…

滤波 放电速度比充电慢 模电

我不理解为什么这里放电速度比充电速度慢&#xff1f; 因为充电时间常数小&#xff0c;而放电时间常数大 转载于:https://www.cnblogs.com/china520/p/10389477.html

Hexo如何绑定个人域名

前两天用HexoGitHub搭建好了自己的个人博客https://www.serendipper-x.cn/&#xff0c;默认域名github下的二级域名&#xff1a;username.github.io&#xff0c;为了提升访问速度和博客的格调&#xff0c;绑定个人域名是多数人的选择。下面给大家介绍详细过程。 购买域名 国内…

什么是涌现?

来源&#xff1a;集智俱乐部作者&#xff1a;由集智俱乐部众包生产在哲学、系统论、科学和艺术中&#xff0c;当一个实体被观察到具有其所有组成部分本身没有的属性时&#xff0c;涌现 emergence 就出现了。这些属性或行为只有当各个部分在一个更广泛的整体中相互作用时才会涌现…

[UVa-437] Color Length

计算贡献&#xff1b;压缩空间优化时间 传送门&#xff1a;$>here<$ 题意 给出两个字符串$a$,$b$&#xff0c;将他们穿插起来&#xff08;相对位置不变&#xff09;,要求最小化$\sum L(c)$&#xff0c;其中$L(c)$的定义时在穿插完的字符串中字符$c$的最大位置与最小位置的…

Vue前后端对接时判断是否与后端连接成功

版权声明&#xff1a;本文为博主原创文章&#xff0c;遵循 CC 4.0 BY-SA 版权协议&#xff0c;转载请附上原文出处链接和本声明。 本文链接&#xff1a;https://blog.csdn.net/Happyaileaf/article/details/101985533 Vue前后端对接时判断是否与后端连接成功使用 axios API连接…

人工智能vs人类智能小传

来源&#xff1a;混沌巡洋舰Alphago代表的深度网络人工智能体现了AI逐步进入未知领域的强大能力&#xff0c; 因此有人堪忧有人喜乐&#xff0c; 却极少有人戳中要害。说AI比人牛是因为它下围棋比人厉害&#xff1f; 说AI离真正的智能很遥远是因为它不能创造吗&#xff1f; 是…

IDEA换行CRLF, LF, CR的解释和默认设置

在window下开发有一个大坑&#xff0c;就是换行默认是CRLF&#xff0c;也就是回车换行&#xff0c;但是Linux下只有换行LF&#xff0c;这样代码提交后&#xff0c;会出现编译问题&#xff0c;所以最好的办法是在IDEA下设置默认为LF。 首先我们先介绍CRLF&#xff0c;LF和CR这三…

云数据库

一.概述 1.1 云计算通过网络以服务的方式为用户提供廉价的资源。 1.2 优势 按需服务&#xff1b;随时服务&#xff1b;通用性&#xff1b;高可靠性&#xff1a;冗余备份&#xff1b;成本低&#xff0c;廉价&#xff1b;超大规模&#xff1b;虚拟化&#xff1b;扩展性高&#…

线程的构造和运行

① 用Thread类构造线程对象&#xff08;继承Thread类来创建并启动多线程&#xff09; package cn.sxt.thread;/*** 创建线程方式一&#xff1a;* 1、创建&#xff1a;继承Thread重写run* 2、启动&#xff1a;创建子类对象start* author 1979**/public class StartThread ext…

一个困扰数学家30多年的分类问题,终于被解决了!

来源&#xff1a;AI科技评论作者&#xff1a;Steve Nadis编译&#xff1a;陈彩娴编辑&#xff1a;青暮一般情况下&#xff0c;当你要对某个特定地区的植物进行调查时&#xff0c;你可能会按植物的种类来划分。就这种方法来看&#xff0c;如果是沿着托斯卡纳海岸的某些地带做这类…

NuGet version

https://stackoverflow.com/questions/15964935/get-nuget-exe-version-from-command-line Typing nuget help from the command line will in addition to the expected help information also list the current NuGet.exe version. 从官网下载&#xff0c;然后直接放在C:\Win…

线程的互斥与同步机制

同个人博客&#xff1a;http://tsundere-x.top/ 一、互斥 为何需要引入互斥机制&#xff1f; 当多个线程对同一数据并发读写&#xff08;至少有一个线程执行写操作&#xff09;时&#xff0c;这种情形被称为竞争。竞争会导致数据读或写的不确定性。而有时这种不确定性是不可…

欢迎参加“城市大脑与应急管理”专家研讨会

来源&#xff1a;城市大脑全球标准研究组数字大脑学术系列沙龙第二期“城市大脑与应急管理”专家研讨会2021以来城市大脑的建设与研究获得了长足发展&#xff0c;数百个城市开展了城市大脑的建设与规划&#xff0c;取得了诸多成果。于此同时&#xff0c;伴随着疫情、水灾、交通…

MapReduce词频统计

1.1 文件准备 创建本地目录和创建两个文本文件&#xff0c;在两个文件中输入单词&#xff0c;用于统计词频。 cd /usr/local/hadoop mkdir WordFile cd WordFile touch wordfile1.txt touch wordfile2.txt1.2 创建一个HDFS目录&#xff0c;在本地上不可见,并将本地文本文件上传…

炼数成金 Oracle EBS R12 DBA培训视频教程

----------------------课程目录------------------------------├01_第一课EBSDBA概要├02_第二课 EBSDBA 安装├02_第二课 R12 Linux x86 64bit installation├03_第三周 EBSDBA 架构├04_第四周EBSDBA-基本管理├05_第五周EBSDBA-OAM├06_第六周EBSDBA-sysadmin├07_第7周E…

Spring中注解大全

Spring中注解大全 Controller 标识一个该类是Spring MVC controller 处理器&#xff0c;用来创建处理http请求的对象 Controller public class TestController{RequestMapping("test")public String test(Map<String,Object> map){return "hello"…

Linux系统组成

1 系统组成 BootLoader&#xff1a;操作系统引导程序 内核&#xff1a; 文件系统&#xff1a;应用程序(用户开发的、网上下载的) 2 安装USB驱动 dongryd-linux:~$ insmod usb_dnw.ko //安装USB驱动 dongryd-linux:~$ kernel:GuoQian USB driver for DMW! //出现这一句说明驱动…