Python Every Day, 第 9 天



文件的读写用到了Python的内置函数open()。读取文件的方式有三种


  • read()
  • readline()
  • readlines()

他们都可以传入一个int类型的参数,来限制读取的范围。默认读取全部内容


创建文件的open函数用法:

file = open(file_name, mode='r',encoding=)


file_name:文件路径

mode:打开方式:默认'r',

encoding: 指定打开的编码


常用的打开方式:

  • r:以只读的方式打开文件,文件必须存在
  • r+ :以读写的方式打开文件,文件必须存在
  • w:以写的方式打开文件,文件若存在,则清空内容,从头写入。若不存在自动创建
  • w+:已读写的方式打开文件,文件若存在,则清空内容,从头写入。若不存在自动创建
  • a:已写的方式打开文件,如果存在,则后面追加写入,如果不存在,则创建
  • a+:已读写的方式打开文件,如果存在,则后面追加写入,如果不存在,则创建


read()


一次性读取整个文件,以字符串的形式返回,如果文件过大,会占用较大的内存空间。

创建古诗文件

python 文件流 读取进度 python文件的读取_python 文件流 读取进度





try:    # 只读模式,utf-8编码打开    file = open('古诗', mode='r', encoding='utf-8')    # 床前明月光,    print(file.read(6)) # 读取前6个字符。如果不填 输入全部except (FileNotFoundError, IOError) as e:    print('文件异常')finally:    file.close()
    # 只读模式,utf-8编码打开
    file = open('古诗', mode='r', encoding='utf-8')
    # 床前明月光,
    print(file.read(6)) # 读取前6个字符。如果不填 输入全部
except (FileNotFoundError, IOError) as e:
    print('文件异常')
finally:
    file.close()


上述代码是一种相对比较low的写法,因为每次读取文件都要关闭文件。这样做是为了操作文件占用的操作系统资源。所以一般读写文件都不这样写,而是通过with open..as..的形式去完成。

如下:




with open('text', 'r', encoding='utf-8') as file:    """    床前明月光,    疑是地上霜。    举头望明月,    低头思故乡。    """    print(file.read())'text', 'r', encoding='utf-8') as file:
    """
    床前明月光,
    疑是地上霜。
    举头望明月,
    低头思故乡。
    """
    print(file.read())



readline()

按行读取文件,读取大文件的时候因为一次只读一行数据,所以不会占用较大内存。




with open('text', 'r', encoding='utf-8') as file:    while 1:        line = file.readline()        if not line:            break        # readline() 每读取一行内容会有个换行符。        # print(line.strip())        print(line.replace('\n', ''))'text', 'r', encoding='utf-8') as file:
    while 1:
        line = file.readline()
        if not line:
            break
        # readline() 每读取一行内容会有个换行符。
        # print(line.strip())
        print(line.replace('\n', ''))



readlines()


一次读取所有文件内容,返回列表,列表中的每个元素 代表每一行的内容。





with open('古诗', 'r', encoding='utf-8') as file:    lines = file.readlines()    # ['床前明月光,\n', '疑是地上霜。\n', '举头望明月,\n', '低头思故乡。']    print(lines)    for i in lines:        print(i.strip())'古诗', 'r', encoding='utf-8') as file:
    lines = file.readlines()
    # ['床前明月光,\n', '疑是地上霜。\n', '举头望明月,\n', '低头思故乡。']
    print(lines)
    for i in lines:
        print(i.strip())