.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:文件打开的模式
'r':读取文件(默认)
'w':向文件写入,并先截断文件
'x' 排它性创建 一个文件,如果文件已经存在则失败
'a':在文件末尾追加写入
'b':二进制模式
't':文本模式(默认)
'+':可读也可以写
- buffering
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.closed3.文件对象的方法
f.read(size)
调用f.read(size)读取文件内容,在文本模式下,它会读取一些数据并将其作为字符串返回,在二进制模式下,将数据作为字节串对象返回。
size是一个可选的数值参数。
- 当size被省略或者为负数时,将读取并返回整个文件的内容;
如果文件的大小是你的机器内存的两倍就会出现问题。
- 当取其他值时,将读取并返回至多size个字符(在文本模式下)或size个字节(在二进制模式下)。
- 如果已到达文件末尾,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 filef.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) 11024f.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)
在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()总结
以上是生活随笔为你收集整理的.npy文件_python——文件读写的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: mysql 角色管理_MySQL 8 用
- 下一篇: python每周小测验答案_python