前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >python_文件的打开和关闭

python_文件的打开和关闭

作者头像
Mirror王宇阳
发布于 2020-11-10 14:07:09
发布于 2020-11-10 14:07:09
1.7K00
代码可运行
举报
运行总次数:0
代码可运行

文件对象 = open('文件名','使用方式') rt:读取一个txt文件 wt: 只写打开一个txt文件,(如果没有该文件则新建该文件)会覆盖原有内容 at:打开一个txt文件,并从文件指针位置追加写内容(文件指针默认在末尾) 文件操作错误属于:I/O异常 通常的异常:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1 try:
2     f = open('a.txt','wt')
3 except Exception as e:
4     print(e)

#文件的写操作 # 函数: 文件对象.write(s)其中s是待写入文件的字符串{文件对象需要时可写入的对象}

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1 try:
2     fobj = open('anc.txt','wt')     #wt:可写入操作方式/at为在原有的文件内容追加写入
3     fobj.write('\nmore')    #写函数
4     fobj.close()
5 
6 except Exception as err:
7     print(err)
8 
9 #结果:anc文件保存至当前目录下,并写入“[换行]more”

#案例:学生信息储存

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 1 name = 'wanzi'
 2 gender = '男'
 3 age = 23
 4 try:
 5     f = open('students.txt','wt')
 6     while True:
 7         #s = Student(i)
 8         #if s:
 9         f.write("namegenderge")
10         ans = input("continue(Y/y):")
11         if ans != 'Y' and ans != 'y':
12             break
13         i = i+1
14     f.close()
15 
16 except Exception as e:
17     print(e)

#读文件操作 文件对象.read(n) //返回全部字符串或者n字节字符

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 1 def writeFile():    #写文件操作
 2     f = open('abc.txt','wt')
 3     f.write("Hello world\nI am Code_boy\nMirror_")  #三行数据(两个\n)
 4     f.close()
 5 
 6 def readFile():     #读文件操作
 7     f = open('abc.txt','rt')
 8     sread = f.read()    #文件内容读取 [如果read(n)有值,则读取n个字符,为空则读取全部]
 9     print(sread)    #将读取的内容打印输出
10     f.close()
11 
12 try:
13     writeFile() #调用写文件函数,写入文件
14     readFile()  #调用读文件函数,读出(打印)文件内容
15 except Exception as e:
16     print(e)
17 
18 '''
19 结果:
20 Hello world
21 I am Code_boy
22 Mirror_
23 '''

#读文件操作 文件对象.readline() //返回一行字符串(读取连续的字符串,遇到\n或文件末尾结束)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 1 def writeFile():
 2     f = open('readline.txt','wt')
 3     f.write('Hello\nworld')
 4     f.close()
 5 
 6 def readlineFile():
 7     f = open('readline.txt','rt')
 8     sreadline = f.readline()    #读取readline文件(只读一行)
 9     print(sreadline,'len=',len(sreadline))
10     sreadline = f.readline()
11     print(sreadline, 'len=', len(sreadline))
12     sreadline = f.readline()
13     print(sreadline, 'len=', len(sreadline))
14     
15     f.close()
16 try:
17     writeFile()
18     readlineFile()
19 except Exception as e:
20     print(e)
21 
22 结果:
23 Hello           #readline中的文件内容: Hello\nworld 结合readline的功能,在读取一行的数据
24  len= 6         # ‘Hello\n’ >>>> 共计6个字节(换行是因为读取了\n)
25 world len= 5    #如上类说明
26  len= 0         #文件指针已到达末尾,无法继续读出数据故 len = 0

# .readline()可以使用循环的方式(判断是否读取为空)来读取全部,一般都是使用读单行内容 #但是! .readlines(){加了一个‘s'}就可以直接读取全部数据:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 1 def writeFile():
 2     f = open('readline.txt','wt')
 3     f.write('Hello\nworld')
 4     f.close()
 5 
 6 def readlinesFile():
 7     f = open('readline.txt','rt')
 8     sreadlines = f.readlines()    #读取readlines文件(读全部行)并以list形式返回
 9     #因为是以列表格式返回,所以一般情况下会配合循环(for)从readlines()提取每一行循环打印输出
10     for i in range(len(sreadlines)):        #1号:利用for输出
11         print(sreadlines[i],end='')
12 
13     print(sreadlines)   #读全部内容,并且每一行用'\n'(显示)隔开    #2号:直接输出
14     f.close()
15 
16 try:
17     writeFile()
18     readlinesFile()
19 except Exception as error:
20     print(error)
21 '''
22 1号结果:
23 Hello
24 world
25    2号结果:
26 ['Hello\n', 'world']        #>>>也就是readlinese()读取数据的储存(list)形式
27 '''

#读取文件中的学生信息

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 1 f = open('student1.txt','rt')
 2 while True:
 3 
 4     name = f.readline().strip('\n')# *.strip()>>用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。
 5     if name == '':
 6         break
 7     gender = f.readline().strip('\n')
 8     age = f.readline().strip('\n')
 9 f.close()
10 print(name,gender,age)

#文件编码 #GBK编码:中文字符包含简体和繁体字符,每个字符仅能存储简体中文字符 汉字占二字节 #*UTF-8编码:全球通用的编码(默认使用)汉字占三字节 #文件打开时,可以指定用encoding参数指定编码例如: # f = open('x.txt','wt',encoding = 'utf-8') # 文件编码直接决定了文件的空间大小

#案例:UTF-8文件编码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 1 def writeFile():
 2     f = open('utf.txt','wt',encoding = 'utf-8')
 3     f.write('Hello I am 王宇阳')
 4     f.close()
 5 
 6 def readFile():
 7     f = open('utf.txt','rt',encoding='utf-8')
 8     sreadlines = f.readlines()
 9     for i in sreadlines:
10         print(i)
11     f.close()
12 try:
13     writeFile()
14     readFile()
15 except Exception as error:
16     print(error)
17 
18 # 结果:   Hello I am 王宇阳

#文件指针(文件结束标志:EOF)...文件对象.tell()[返回一个整数,整数则是指针的位置]

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 1 f = open('zz.txt','wt',encoding='utf-8')
 2 print(f.tell())     #指针位置:0
 3 f.write('abcdef 你好')
 4 print(f.tell())     #指针位置:13
 5 f.close()
 6 f = open('zz.txt','rt',encoding='utf-8')
 7 f.tell()   #文件指针归零
 8 s = f.read(3)
 9 print(s,f.tell())   #输出read读取内容并返回指针位置。读取大小和指针位置相符
10 f.close()
11 #结果:
12 0
13 13
14 abc 3

#操作指针...文件对象.seek(offset[,whence]) # offset:开始的偏移量,代表着需要偏移的字节数 # whence:[可选]默认值为‘0’,给offset参数一个定义,表示从那个位置开始偏移,0:文件开头 1:文件当前位置 2:文件末尾 #----注意,只有 “rt+ wt+ at+” 的打开方式可以调整指针,其他的打开方式不支持指针操作

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 1 def writeFile():
 2     f = open('zz1.txt','wt+',encoding='utf-8')
 3     print(f.tell())         #返回初始指针位置 >>> 0
 4     f.write('123')          #写入3字节内容
 5     print(f.tell())         #返回当前(写入文件后的)指针位置
 6     f.seek(2,0)             #指针从开头位置偏移2字节即:1 2 . 3(点的位置)
 7     print(f.tell())         #返回指针位置>>>2
 8     f.write('abc')          #从当前指针位置写入‘abc’(覆盖了‘3’)
 9     print(f.tell())         #返回指针位置>>>5
10     f.close()
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 1 def readFlie():
 2     f = open('zz1.txt','rt+',encoding='utf-8')
 3     r = f.read()
 4     print(r)
 5     f.close()
 6 
 7 writeFile()
 8 readFlie()
 9 #结果:
10 0
11 3
12 2
13 5
14 12abc
15 '''

#二进制文件 #打开方式:rb wb ab rb+ wb+ ab+ ''' 实践中总结: 1' list内容写入文件在需要专成str格式,应为列表格式文件不接受或者采用 (f.a) 的样式;(案例综合:教材管理95-101行)


本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-11-28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
一文速通Nginx网关与gateway网关区分
网关的角色是作为一个 API 架构,用来保护、增强和控制对于 API 服务的访问。API 网关是一个处于应用程序或服务(提供 REST API 接口服务)之前的系统,用来管理授权、访问控制和流量限制等,这样 REST API 接口服务就被 API 网关保护起来,对所有的调用者透明。因此,隐藏在 API 网关后面的业务系统就可以专注于创建和管理服务,而不用去处理这些策略性的基础设施。
一个风轻云淡
2023/10/25
6.8K0
构建高可用网关之容错实践
自从微服务概念以来,众多的软件架构在践行着这一优秀的设计理念。各自的系统在这一指导思想下收获了优雅的可维护性,但一方面也给接口调用提出了新的要求。比如众多的API调用急需一个统一的入口来支持客户端的调用。在这种情况下API GATEWAY诞生,我们将接入、路由、限流等功能统一由网关负责,各自的服务提供方专注于业务逻辑的实现,从而给客户端调用提供了一个稳健的服务调用环境。之后,我们在网关大调用量的情况下,还要保证网关的可降级、可限流、可隔离等等一系列容错能力。 一、网关 这里说的网关是指API网关,直面意思是
纯洁的微笑
2018/04/18
1.3K0
构建高可用网关之容错实践
Spring Cloud Gateway解析
Gateway( 网关),顾名思义,是出现在系统边界上的一个面向API或应用服务的、串行集中式的强管控服务,这里我们讨论的边界可以基于企业IT系统的边界,当然,可以理解为企业级应用防火墙,其目标主要起到隔离外部访问与内部系统交互的作用。在微服务概念的流行之前,网关就已经诞生了,在面向SOA体系中已经成熟,然而,随着微服务体系的快速发展,更进一步将Gateway推向更高的浪口。与其说网关催生了微服务体系,不如说微服务体系拥抱了网关。
Luga Lee
2021/12/09
8600
Spring Cloud Gateway解析
架构师如何选型分布式业务网关
在日常工作中,不同的场合下,我们可能都会听说网关的概念,当然通常是指业务网关(API网关),负责API的输入和输出。有了业务网关之后,各个API服务提供者可以专注于自己的业务逻辑处理,而API网关更专注于安全、流量、路由等问题。从功能层次我们又会联想到一个概念——代理。网关与代理的区别:代理本质是数据的透传,协议不会发生变化;网关在数据透传的背景下,还会涉及协议的转换,比如从HTTP到Dubbo。
35岁程序员那些事
2022/09/23
9040
架构师如何选型分布式业务网关
B站基于微服务的API网关从0到1的演进之路
如果你在 2015 年就使用 B 站,那么你一定不会忘记那一年 B 站工作日选择性崩溃,周末必然性崩溃的一段时间。
JackJiang
2022/06/14
1K0
B站基于微服务的API网关从0到1的演进之路
SpringCloud-Alibaba | 微服务架构介绍
微服务架构, 简单的说就是将单体应用进一步拆分,拆分成更小的服务,每个服务都是一个可以独立运行的项目。
码神联盟
2020/12/03
7590
SpringCloud-Alibaba |  微服务架构介绍
SpringCloud——微服务介绍+系统架构
* 全部功能集成在一个工程中,对于大型项目来讲不易开发和维护* 项目模块之间紧密耦合,单点容错率低* 无法针对不同模块进行针对性能优化和水平扩展
用户10196776
2022/11/22
1.1K0
SpringCloud——微服务介绍+系统架构
微服务网关系列:为什么需要API网关
微服务是指开发应用所用的一种架构形式。具体表现是将大型应用分解成多个独立的服务,以API形式对外提供服务。
AIOPS
2023/11/01
5030
初步了解SpringCloud微服务架构
针对上述问题,传统的单体结构已经不再适用于复杂度日益渐增的产品,因此一种新的软件架构提供了解决方案 —— 微服务 。
程序员Leo
2023/08/07
1.1K0
初步了解SpringCloud微服务架构
原创好文!亿级流量网关设计思路
本文准备围绕七个点来讲网关,分别是网关的基本概念、网关设计思路、网关设计重点、流量网关、业务网关、常见网关对比,对基础概念熟悉的朋友可以根据目录查看自己感兴趣的部分。
cxuan
2021/03/12
2.1K0
云原生环境下的API业务安全思考
针对单体架构的应用,安全防护往往在边界网关设备处。随着业务需求的不断变化以及技术的持续更新,企业应用开始从单体架构向微服务架构转变。不同应用模块可以根据业务规模进行动态扩缩容,与此同时,微服务应用也为API安全防护带来了新的挑战。
绿盟科技研究通讯
2021/11/17
1.1K0
云原生环境下的API业务安全思考
快速学习-微服务简介
随着互联网的发展,网站应用的规模也在不断的扩大,进而导致系统架构也在不断的进行变化。
cwl_java
2020/08/28
6640
快速学习-微服务简介
5款基于Java开发的开源API网关
在微服务架构中,API网关是一个必不可少的组件之一,下面推荐几款基于Java语言开发的高性能API网关。
openapplus
2020/10/30
6.2K0
微服务网关除了zuul、spring cloud gateway还有更出色的
在微服务架构中,由于系统和服务的细分,导致系统结构变得非常复杂, 为了跨平台,为了统一集中管理api,同时为了不暴露后置服务。甚至有时候需要对请求进行一些安全、负载均衡、限流、熔断、灰度等中间操作,基于此类种种的客观需求一个类似综合前置的系统就产生了,这就是API网关(API Gateway)。API网关作为分散在各个业务系统微服务的API聚合点和统一接入点,外部请求通过访问这个接入点,即可访问内部所有的REST API服务。目前常用的微服务网关有zuul、gateway,今天来简单介绍一下另一种选择——Kong 。说到Kong可能对大家有点陌生,我们来先了解下另一种不陌生的中间件——OpenResty。
码农小胖哥
2019/12/10
2K0
微服务网关除了zuul、spring cloud gateway还有更出色的
nginx和gateway什么关系_api网关和redis的关系
对于具体的后端业务应用或者是服务和业务有一定关联性的策略网关就是上图左边的架构模型——业务网关。 业务网关针对具体的业务需要提供特定的流控策略、缓存策略、鉴权认证策略等等。
全栈程序员站长
2022/11/07
1.7K0
nginx和gateway什么关系_api网关和redis的关系
普元EOS 8网关设计及应用
普元EOS 8 API Gateway作为一个独立模块,可以对API进行创建、发布、维护、监控等全生命周期管理。
yuanyi928
2019/03/07
1.2K0
gateway 鉴权_gateway网关集群
说起鉴权,大多数会立马想到各种鉴权的技术,比如过滤器、拦截器、安全治理框架shiro、spring-security等等,它们在不同的业务场景下发挥的作用各不相同,但是总体来说都有一个相似的作用,就是作为后端服务的安全防护层
全栈程序员站长
2022/11/10
1.4K0
【云原生应用安全】云原生应用安全防护思考(一)
应用是云原生体系中最贴近用户和业务价值的部分,笔者在之前《云原生应用安全风险思考》一文中分析了云原生应用面临的风险,相信各位读者已经有所了解,本文为云原生应用安全防护系列的第一篇,主要针对传统应用安全、API安全、云原生应用业务安全这三方面风险提出笔者的一些防护见解及思考。另外,文章篇幅较长,且内容上与前述风险篇相互对应,若结合在一起阅读,思路会更清晰些,希望本文可为各位读者带来更多思考。
绿盟科技研究通讯
2021/09/27
2K0
TSF微服务治理实战系列(四)——服务安全
导语 “道路千万条,安全第一条。治理不规范,老板两行泪”。 当企业从单体架构逐渐转向微服务架构时,服务安全的需求也随之分散到了整个微服务体系的各个部分中。这就需要构建一套配置活、成本低的安全防控体系,覆盖请求链路中的各个部分,满足用户的安全诉求。本章将从安全的视角介绍TSF相关的能力,包括服务和网关的鉴权机制、如何保证应用配置的安全、权限管理及事件审计等方面。 作者简介 崔凯 腾讯云 CSIG 微服务产品中心产品架构师 多年分布式、高并发电子商务系统的研发、系统架构设计经验,擅长主流微服务架构技术平台的
腾讯云中间件团队
2022/11/24
1.3K0
TSF微服务治理实战系列(四)——服务安全
云原生之微服务架构
傍晚时分,你坐在屋檐下,看着天慢慢地黑下去,心里寂寞而凄凉,感到自己的生命被剥夺了。当时我是个年轻人,但我害怕这样生活下去,衰老下去。在我看来,这是比死亡更可怕的事。--------王小波
山河已无恙
2023/01/30
9480
云原生之微服务架构
推荐阅读
相关推荐
一文速通Nginx网关与gateway网关区分
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档