.npy文件_python——文件读写

一:Python中读写文件的方法

1.open()函数

open(file,mode='r',buffering=-1,encoding=None,errors=None,newline=None,closefd=True,opener=None)

  • file : 是一个 path-like object,表示将要打开的文件的路径,可以是绝对路径也可以是相对路径,也可以是要被封装的整数类型文件描述符。如果是文件描述符,它会随着返回文件对象关闭而关闭,除非 closefd 被设为 False 。
  • mode:文件打开的模式

99057c60f26fe3d4b79c874b3e0cb554.png

'r':读取文件(默认)

'w':向文件写入,并先截断文件

'x' 排它性创建 一个文件,如果文件已经存在则失败

'a':在文件末尾追加写入

'b':二进制模式

't':文本模式(默认)

'+':可读也可以写

  • buffering

buffering 是一个可选的整数,用于设置缓冲策略。

  1. 传递0以切换缓冲关闭(仅允许在二进制模式下)
  2. 选择行缓冲(仅在文本模式下可用),
  3. 并且>1的整数以指示固定大小的块缓冲区的大小(以字节为单位)。
  4. 如果没有给出 buffering 参数,则默认缓冲策略的工作方式如下:
  • 二进制文件以固定大小的块进行缓冲;使用启发式方法选择缓冲区的大小,尝试确定底层设备的“块大小”或使用 io.DEFAULT_BUFFER_SIZE。在许多系统上,缓冲区的长度通常为4096或8192字节。
  • “交互式”文本文件( isatty() 返回 True 的文件)使用行缓冲。其他文本文件和二进制文件一样。
  • encoding

encoding 是用于解码或编码文件的编码的名称。仅仅在文本模式下使用。默认编码是依赖于平台的(不管 locale.getpreferredencoding() 返回何值)。

可以使用任何Python支持的 text encoding 。有关支持的编码列表,请参阅 codecs 模块。

例如:

f=open('/Users/michael/notfound.txt', 'r')
f.read()
f.close()

2. with 关键字

在处理文件对象时,最好使用 with 关键字。

优点:

1.当子句体结束后文件会正确关闭,即使在某个时刻引发了异常也能关闭。

2.with 相比等效的 try-finally 代码块要简短得多:

with open('workfile') as f: 
read_data = f.read()
f.closed

3.文件对象的方法

f.read(size)

调用f.read(size)读取文件内容,在文本模式下,它会读取一些数据并将其作为字符串返回,在二进制模式下,将数据作为字节串对象返回。

size是一个可选的数值参数。

  • size被省略或者为负数时,将读取并返回整个文件的内容;

如果文件的大小是你的机器内存的两倍就会出现问题。

  • 当取其他值时,将读取并返回至多size个字符(在文本模式下)或size个字节(在二进制模式下)。
  • 如果已到达文件末尾,f.read()将返回一个空字符串 ('')。
>>> f.read()
'This is the entire file.n'
>>> f.read()
''

f.readline()

读取文件的一行。如果到达文件的末尾就返回一个空的字符串。如果读取一个空行,就使用'n'表示,即该字符串只包含一个换行符。

>>> f.readline()
'This is the first line of the file.n'
>>> f.readline()
'Second line of the filen'
>>> f.readline()
''

如果要逐行读取文件,也可以一下方法:

>>> for line in f:
...     print(line, end='')
...
This is the first line of the file.
Second line of the file

f.write(string)

会把 string 的内容写入到文件中,并返回写入的字符数。:

>>> f.write('This is a testn') 
15

在写入其他类型的对象之前,在文本模式下,需要先把它们转化为字符串,在二进制模式下,需要先把它们转化为字节对象

>>> value = ('the answer', 42) 
>>> s = str(value) # convert the tuple to string 
>>> f.write(s) 
18

读写2进制文件(图片)

>>> f= open("./440.jpeg",'rb')>>> a=f.read()
>>> len(a)
11024>>> f2=open('./person.jpeg','wb')
>>> f2.write(a)
11024

f.tell()

f.tell() 返回一个整数,给出文件对象在文件中的当前位置,在二进制模式下为从文件开始的字节数,以及文本模式下从文件开始的字符数。

f.seek(offset, whence)

要改变文件对象的位置,请使用 f.seek(offset, whence)。 通过向一个参考点添加 offset 来计算位置;参考点由 whence 参数指定。

  • whence 的 0 值表示从文件开头起算,
  • 1 表示使用当前文件位置,
  • 2 表示使用文件末尾作为参考点。
  • whence 如果省略则默认值为 0,即使用文件开头作为参考点。

注意:在文本文件中,只允许相对于文件开头搜索

2进制文件

>>> f = open('workfile', 'rb+')
>>> f.write(b'0123456789abcdef')
16
>>> f.seek(5)      # Go to the 6th byte in the file
5
>>> f.read(1)
b'5'
>>> f.seek(-3, 2)  # Go to the 3rd byte before the end
13
>>> f.read(1)
b'd'

字符文件

>>> f.write("this is a txtn")
14
#刚写完文件所以在最后一位
>>> f.tell()
15
#读一个字节,为空字符串
>>> f.read(1)
''
#设置文件指针到位置0>>> f.seek(0)
0>>> f.tell()
0
#读一个字符
>>> f.read(1)
't'
>>> f.read(2)
'hi'
>>> f.tell()
3
>>> f.read()
's is a txtn'
>>> f.tell()
15

二:numpy中读写文件的方法

NumPy二进制文件(NPY,NPZ)

b67c4e90b8155824dfe26e79c14602de.png

在python中有两种二进制文件:npy和npz文件,npy文件保存一个array,npz保存多个array,

并且可以指定关键字,默认的关键字是0,1,2.....

npy文件:

>>> np.save('/tmp/123', np.array([[1, 2, 3], [4, 5, 6]]))
>>> np.load('/tmp/123.npy')
array([[1, 2, 3],[4, 5, 6]])

npz文件:

>>> a=np.array([[1, 2, 3], [4, 5, 6]])
>>> b=np.array([1, 2])
>>> np.savez('/tmp/123.npz', a=a, b=b)
>>> data = np.load('/tmp/123.npz')
>>> data['a']array([[1, 2, 3],[4, 5, 6]])
>>> data['b']
array([1, 2])
>>> data.close()

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

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

相关文章

react native loading动画_React高级进阶指南

懒加载React.lazy函数能让你像渲染常规组件一样处理动态引入(的组件)。 Suspense加载指示器为组件做优雅降级。 fallback属性接受任何在组件加载过程中你想展示的 React 元素。const OtherComponent React.lazy(() > import(./OtherComponent));function MyComponent() { r…

在一起计时器_古典计时器简介之一 qqtimer

可持续水文的路子又多了一条。在这一系列古典计时器中,qqtimer的地位有些特殊,因为现在还有不少人使用它,而之后要介绍的其他计时器已经基本没啥人用了。有两位最知名的WR日常练习的计时器都是它。首先是Feliks Zemdegs,虽然他已经…

管理节点连接不上sql节点_质量成本管理:成本控制、成本分析、费用使用流程与节点说明...

关注【本头条号】更多关于制度、流程、体系、岗位、模板、方案、工具、案例、故事、图书、文案、报告、技能、职场等内容,弗布克15年积累免费与您分享!阅读导航→01 质量成本控制流程与节点02 质量成本分析流程与节点03 质量费用使用控制流程与节点质量部…

springmvc工作流程_SpringMVC工作原理

买了好多书,但是没有一本是看完的,这是看完的第一本书,虽然页数不多、技术早就用了老多遍了,还是总结一下吧!一、MVC模式MVC是 model、view、和controller的缩写,分别代表web应用程序中的三种职责&#xff…

sql查找一个范围的值_销售需求丨查找问题

BOSS:茶,那个,什么茶来着?(递过一杯茶...)BOSS:?!!不是这个,我是说那个白茶啊!白茶:......(懵)咋滴…

pandas输出到excel_学Python还不会处理Excel数据?带你用pandas玩转各种数据处理

开场白以前学习 Python 的 pandas 包时,经常到一些 excel 的论坛寻找实战机会。接下来我会陆续把相关案例分享出来,还会把其中的技术要点做详细的讲解。本文要点:使用 xlwings ,如同 vba 一样操作 excel使用 pandas 快速做透视表注…

cadence设计运算放大器_21.比较器的原理与特性,它与运算放大器的本质区别总结归纳...

1.电压比较器的工作原理电压比较器,顾名思义,就是两个输入端的其中一个作为基准,另外一个与基准作比较,输出只存在高电平和低电平两种状态。通过电压比较器,可以将模拟信号转变为数字信号。输入引脚的电位 > -输入引…

插入排序最优_排序专题插入排序

今天开始,我计划用几篇专题来集中练习下有关排序的算法,排序算法是算法中最基础的算法了,所以这部分我们是要尽可能的全都掌握了。排序算法最常见的有如下几种:插入排序(Insertion Sort)选择排序(Selection Sort)希尔排序(Shell S…

c语言设计指导实训,C语言程序设计实训指导

与《c语言程序设计(第2版)》配套,给出所有习题及参考答案。按知识点,精选12个典型实训,给出实训目的与要求、实训内容及实训参考程序。附有自测(考试)样卷及参考答案,供读者自测。提供Turbo C 2.0上机环境介绍及常见的Turbo C 2.0…

python程序代码_python基础二

Python基础-注释的引入注释的分类:<1>单行注释:以#开头&#xff0c;#右边的所有文字当作说明&#xff0c;而不是真正要执行的程序&#xff0c;起辅助说明作用多行注释用三个单引号 ‘’’ 或者三个双引号 “”" 将注释括起来&#xff0c;例如:1、单引号&#xff08;…

电气自动化c语言实践操作论文,项目实践论文,关于独立学院电气工程其自动化专业基于CDIO的实践模式相关参考文献资料-免费论文范文...

导读:本文关于项目实践论文范文,可以做为相关论文参考文献,与写作提纲思路参考。(广州大学松田学院 广东广州 511370)摘 要&#xff1a;独立学院作为培养应用型人才的新生力量,要与地方经济社会发展相衔接,培养满足地方经济社会发展需要的、高素质的应用型人才.如何培养符合广东…

linux里用c实现cat_【案例】用T云做了什么能让企业在工业自动化控制系统行业里实现逆向增长?...

从制造至“智”造&#xff0c;工业正在逐步向自动化、智能化方向深入发展。行业背景&#xff1a;受疫情影响&#xff0c;2020年&#xff0c;上半年雪虐风饕&#xff0c;自动化市场需求下滑&#xff0c;随着后期政策红利推出&#xff0c;市场回暖&#xff0c;上半年的自动化需求…

微软符号服务器 2020年_微软介绍了2020年后它将如何淘汰Edge中的Flash支持

Microsoft Edge微软(通过Bleeping Computer)提供了更多关于它将如何放弃对Flash in Edge的支持以符合Adobe的计划的细节&#xff0c;包括一些值得注意的例外。正如所料&#xff0c;默认情况下&#xff0c;Edge将从2020年12月起禁用闪存。2020年6月之前发布的Flash版本将被完全屏…

深入jvm虚拟机第三版源码_深入JVM虚拟机,阿里架构师直言,这份文档真的是JVM最深解读...

作为一名优秀的 Java 开发程序员&#xff0c;以及想那些想要学习 Java 更深层一点的知识的同学&#xff0c;对 JVM 的熟悉与熟练使用是必不可缺的核心技能了&#xff0c;也是每个 Java 程序员应该要做到的。深入学习 JVM 可以有助于我们掌握 Java 应用程序是如何运作的&#xf…

android 信鸽 自动重启,Android简单集成信鸽推送

添加项目的buid.gradlendk {//选择要添加的对应cpu类型的.so库abiFilters armeabi, armeabi-v7a, arm64-v8a// 还可以添加 x86, x86_64, mips, mips64}manifestPlaceholders [XG_ACCESS_ID:"2100332371",XG_ACCESS_KEY : "ABRD93KT147K",]依赖//采集安装列…

python变量类型是动态的_python内存动态分配过程详解

一、前言 大多数编译型语言&#xff0c;变量在使用前必须先声明&#xff0c;其中C语言更加苛刻&#xff1a;变量声明必须位于代码块最开始&#xff0c;且在任何其他语句之前。其他语言&#xff0c;想C和java,允许“随时随地”声明变量&#xff0c;比如&#xff0c;变量声明可以…

python树莓派串口通信实例_树莓派通过串口发送数据

可以通过串口登陆树莓派&#xff0c;也可以通过串口向其他主机发送数据。树莓派的串口接受数据科技爱好者博客已经写过&#xff0c;可以参考这篇文章&#xff1a;树莓派与arduino串口通信实践。这篇文章教大家如果通过树莓派的串口发送数据。 一、开启树莓派的串口功能 sudo ra…

sklearn朴素贝叶斯分类器_python机器学习:方法链和朴素贝叶斯分类器

今天我们在学习朴素贝叶斯分类器之前&#xff0c;我们先来总结下前面经常用到的内容&#xff0c;方法链&#xff1a;在scikit-learn中所有模型的fit方法返回的都是self。我们用一行代码初始化模型并拟合&#xff0c;对应代码如下&#xff1a;logreg LogisticRegression().fit(…

24v开关电源维修技巧_焊机维修案例汇总6

案例1&#xff1a;开机保护检查整流桥、场管、快恢复二极管都正常。通电试机&#xff0c;面板亮黄灯&#xff0c;拔掉中板变压器接插线&#xff0c;黄灯灭&#xff0c;怀疑中板变压器有损坏。断电&#xff0c;用电感表测量变压器电感量&#xff0c;中板采用三个变压器并联&…

华为鸿蒙mota30手机多少钱,华为Mate30系列基本确认:麒麟985、鸿蒙系统、5G,价格满意!...

原标题&#xff1a;华为Mate30系列基本确认&#xff1a;麒麟985、鸿蒙系统、5G&#xff0c;价格满意&#xff01;现在华为越来越的受到国人的重视&#xff0c;一方面是因为米国对于华为的不公正待遇&#xff0c;另一方面还是因为华为产品可以真正的让用户们认可。现在&#xff…