• Python学习笔记(八) 文件处理


    1、打开和关闭

    要打开文件可以使用函数 open(),它位于自动导入模块 io 中

    函数将文件名作为唯一不可缺少的参数,并返回一个文件对象

    它还有一个名叫 mode 的参数,用于指定文件模式,其可取值如下:

    描述
    'r' 读取模式(默认值)
    'w' 写入模式,当文件不存在时创建它,当文件存在时清除原有内容
    'x' 独占写入模式,当文件不存在时创建它,当文件存在时引发异常
    'a' 附加模式,在既有文件末尾继续写入
    'b' 二进制模式(与其它模式结合使用)
    't' 文本模式(默认值,与其它模式结合使用)
    '+' 读写模式(与其它模式结合使用)

    要关闭文件可以使用函数 close(),在把数据写入文件后,若没有正确关闭文件,则很可能不能成功地写入数据

    为此,Python 提供了一种更加简便的方法,with 语句。当使用 with 语句打开文件时,将自动关闭文件

    >>> with open('fileName') as f:
        	pass
    

    2、读取和写入

    首先要明白,在文本模式和二进制模式下,Python 分别将 str 和 bytes 作为文件传输的基本数据类型

    (1)按字符或字节读写

    如果有一个名为 f 的文件对象,那么我们可以用 f.write() 来写入数据

    >>> f = open('testFile.txt','w') # 当没有指定 b 或 t 时,默认为 t
    >>> f.write('Hello, ')
    # 7
    >>> f.write('World')
    # 5
    >>> # 还没有使用 f.close 关闭文件时,文件中没有写入任何内容
    >>> f.close()
    

    读取也同样简单,使用 f.read() 方法即可

    在文本模式下需要说明读取多少个字符,在二进制模式下需要说明读取多少个字节

    >>> f = open('testFile.txt') # 当不指定模式时,默认为 rt
    >>> f.read(2)
    # 'He'
    >>> f.read() # 不提供参数时,读取余下的全部内容
    # 'llo, World'
    

    (2)按行读写

    对于按行读取文件,我们可以使用方法 readline()

    当不提供任何参数时,读取一行并返回,当提供一个非负整数时,读取指定字符数并返回

    如果希望读取文件中所有行,并以列表的方式返回它们,可以使用方法 readlines()

    对于写入文件,方法 writelines() 和方法 readlines() 相反,其接收一个字符串列表,并将这些字符串写入文件中

    注意,写入时并不会自动添加换行符,因此必须自行添加,另外,不存在方法 `writeline()``

    >>> f = open('testFile.txt','w')
    >>> f.writelines(['I
    ','Love
    ','Python
    '])
    >>> f.close()
    >>> f = open('testFile.txt','r')
    >>> f.readline()
    # 'I
    '
    >>> f.readlines()
    # ['Love
    ', 'Python
    ']
    

    (3)迭代文件对象

    ① 每次一个字符或字节

    with open(fileName) as f:
        while True:
            char = f.read(1)
            if not char: break
            process(char)
    

    ② 每次一行

    with open(fileName) as f:
        while True:
            line = f.readline()
            if not line: break
            process(line)
    

    ③ 文件迭代器

    with open(fileName) as f:
        for line in f:
            process(line)
    

    3、随机存储

    在之前的做法中,我们将文件视为流,只能按顺序从头到尾读取

    实际上,读写可以在任意位置进行,这称为随机存储。为此,可以使用文件对象的两个方法:seektell

    方法 seek(offest[, whence]) 将当前位置移到 offest 和 whence 指定的位置

    参数 offest 指定偏移字符或字节数,参数 whence 指定偏移的初始位置,它的取值有三个:

    默认为文件开头 io.SEEK_SET(0),可以是当前位置 io.SEEK_CUR(1),可以是文件末尾 io.SEEK_END(2)

    方法 tell() 返回文件当前位置

    >>> f = open('testFile.txt','w')
    >>> f.write('01234567890123456789')
    # 20
    >>> f.seek(5)
    # 5
    >>> f.write('Hello World')
    # 11
    >>> f.close()
    >>> f = open('testFile.txt','r')
    >>> f.read()
    # '01234Hello World6789'
    >>> f.close()
    

    【 阅读更多 Python 系列文章,请看 Python学习笔记

    版权声明:本博客属于个人维护博客,未经博主允许不得转载其中文章。
  • 相关阅读:
    集合
    二维数组
    数组案例
    数组
    date time 和string
    if和for的案例
    if条件语句 for循环语句
    Windows Azure Mangement API 之 更方便的使用Mangement API
    Azure Table storage 之改进DynamicTableEntity类为其添加动态语言扩展
    Windows Azure Table storage 之 动态Table类 DynamicTableEntity
  • 原文地址:https://www.cnblogs.com/wsmrzx/p/10341076.html
Copyright © 2020-2023  润新知