欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

.npy文件_python——文件读写

发布时间:2023/12/10 50 豆豆
生活随笔 收集整理的这篇文章主要介绍了 .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 是一个可选的整数,用于设置缓冲策略。

  • 传递0以切换缓冲关闭(仅允许在二进制模式下)
  • 选择行缓冲(仅在文本模式下可用),
  • 并且>1的整数以指示固定大小的块缓冲区的大小(以字节为单位)。
  • 如果没有给出 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)

    在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——文件读写的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。