zoukankan      html  css  js  c++  java
  • python中文档IO的读写

    首先明确一点,现代计算机的操作系统都不允许程序直接操作磁盘的,所以读取文件和写入文件都是有操作系统提供的提供的接口完成的,每一种编程语言都会把操作系统提供的低级C接口封装起来方便使用,Python也不例外。python是怎么样读取文件的。

    文件打开

    f= open ('C:/Users/Administrator/Desktop/test.txt','r')

    1、文件的读取

    使用open语句进行文件的打开操作,括号里面指明文件的位置和阅读的模式,'r'只读,还是'w'写入.中间用逗号隔开,位置与模式分别使用引号。

    文件打开成功,可以使用read()方法进行一次性全部读取到计算机内存中,并用一个字符串对象表示,

    >>> f.read()
    ''

    因为文件是空的,返回  ''

    使用 read() 方法危险之处在于如果文件过大,计算机内存就会爆满,可以使用更加安全的方法。

    read(size)表示每次最多读取size字节的内容
    readline()表示每次读取一行的内容
    readlines()表示一次读取所有内容并按行返回list

    2、文件的写入

    首先打开文件,指定写入模式:

    f= open ('C:/Users/Administrator/Desktop/test.txt','w')

    写入内容:

    f.write('hello,world')

    这是文本已经写人文件。

    3、关闭文件

    打开的文件对象会占用系统的资源,所以要进行关闭操作,另外操作系统同一时间能打开的文件数量也是有限的,及时关闭文件是良好的代码书写习惯。

    f.close()

    至此一个文件的读取、写入、关闭完成。

    注意的是使用IO读写很可靠会发生错误,这是文件依旧打开但是使用close()会失去调用,为了保证无论是否出错我们都能正确的关闭文件,使用python中的try finally来实现。

    try:
        f = open('C:/Users/Administrator/Desktop/test.txt', 'r')
        print(f.read())
    finally:
        if f:
            f.close()

    使用with语句来自动帮我们调用close()方法:

    with open('C:/Users/Administrator/Desktop/test.txt', 'r') as f:
         print(f.read())

    try ... finally是一样的,但是代码更佳简洁,并且不必调用f.close()方法。

    4、其他文件读取:

    读取二进制文件:例如视频、图片,用'rb'模式打开文件即可:

    f = open('/Users/michael/test.jpg', 'rb')

    读取非UTF-8编码的文本文件,需要给open()函数传入encoding参数:

    f = open('/Users/michael/gbk.txt', 'r', encoding='gbk')

    遇到有些编码不规范的文件,open()函数还接收一个errors参数,表示如果遇到编码错误后如何处理。最简单的方式是直接忽略:

    f = open('/Users/michael/gbk.txt', 'r', encoding='gbk', errors='ignore')

    常见的文件打开模式:

    r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
    
    rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
    
    r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
    
    rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
    
    w 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
    
    wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
    
    w+ 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
    
    wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
    
    a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
    
    ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
    
    a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
    
    ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。
    

    最后注意:

     在Windows资源管理器中的文件地址位置使用的"",但是在python中的读取时路径要使用"/"否则会出现错误。

    根据廖老师的教程整理。

  • 相关阅读:
    Lua ip转整数
    纯lua实现Base64加密与解密
    lua之base64的解码和编码(三种方案实现)
    Lua 5.1 位操作(与,或,异或操作)
    Lua打印Table对象
    Lua 截取字符串(截取utf-8格式字符串)
    lua 截取字符,以及取字符个数(非字符串长度)
    lua 加密解密
    Openwrt与贝壳物联平台通讯示例
    php socket编程:使用socket_recv而不是socket_read
  • 原文地址:https://www.cnblogs.com/engeng/p/6640087.html
Copyright © 2011-2022 走看看