.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()
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值