• 045 文件的使用


    一、概述

    • 文件的类型
    • 文件的打开和关闭
    • 文件内容的读取
    • 数据的文件写入

    二、文件的类型

    2.1 文件的理解

    文件是数据的抽象和集合

    • 文件是存储在辅助存储器上的数据序列
    • 文件是数据存储的一种形式
    • 文件展现形态:文本文件和二进制文件

    文本文件 vs. 二进制文件

    • 文件文件和二进制文件只是文件的展示方式
    • 本质上,所有文件都是二进制形式存储
    • 形式上,所有文件采用两种方式展示

    2.2 文本文件

    文件是数据的抽象和集合

    • 由单一特定编码组成的文件,如UTF-8编码
    • 由于存在编码,也被看成是存储着的长字符串
    • 适用于例如:.txt文件、.py文件等

    2.3 二进制文件

    文件是数据的抽象和集合

    • 直接由比特0和1组成,没有统一字符编码
    • 一般存在二进制0和1的组织结构,即文件格式
    • 适用于例如:.png文件、.avi文件等

    2.4 文本文件 vs. 二进制文件

    "中国是个伟大的国家!"

    • 文本形式:中国是个伟大的国家!
    • 二进制形式:b'xd6xd0xb9xfaxcaxc7xb8xf6xcexb0xb4xf3xb5xc4xb9xfaxbcxd2xa3xa1'

    2.5 f.txt文件保存

    f.txt文件保存: "中国是个伟大的国家!"

    # 文本形式打开文件
    tf = open("f.txt", "rt")
    print(tf.readline())
    tf.close()
    
    # 二进制形式打开文件
    bf = open("f.txt", "rb") 
    print(bf.readline()) 
    bf.close()
    

    三、文件的打开和关闭

    3.1 文件的打开关闭

    文件处理的步骤: 打开-操作-关闭

    45-文件的使用-01.jpg?x-oss-process=style/watermark

    # 读文件
    a.read(size)
    a.readline(size)
    a.readlines(hint)
    
    # 写文件
    a.write(s)
    a.writelines(lines)
    a.seek(offset)
    

    3.2 文件的打开

    45-文件的使用-02.jpg?x-oss-process=style/watermark

    3.3 文件路径

    文件路径和名称:"D:/PYE/f.txt" 或 "D:PYEf.txt"

    源文件同目录可省路径:"./PYE/f.txt" 或 "f.txt"

    3.4 打开模式

    文件的打开模式描述
    'r' 只读模式,默认值,如果文件不存在,返回FileNotFoundError
    'w' 覆盖写模式,文件不存在则创建,存在则完全覆盖
    'x' 创建写模式,文件不存在则创建,存在则返回FileExistsError
    'a' 追加写模式,文件不存在则创建,存在则在文件最后追加内容
    'b' 二进制文件模式
    't' 文本文件模式,默认值
    '+' 与r/w/x/a一同使用,在原功能基础上增加同时读写功能
    • 文本形式、只读模式、默认值:f = open("f.txt")
    • 文本形式、只读模式、同默认值:f = open("f.txt", "rt")
    • 文本形式、覆盖写模式:f = open("f.txt", "w")
    • 文本形式、追加写模式+ 读文件:f = open("f.txt", "a+")
    • 文本形式、创建写模式:f = open("f.txt", "x")
    • 二进制形式、只读模式:f = open("f.txt", "b")
    • 二进制形式、覆盖写模式:f = open("f.txt"):f = open("f.txt", "wb")

    3.5 文件的关闭

    <变量名>.close() # 变量名为文件句柄

    3.6 文件使用

    # 文本形式打开文件
    tf = open("f.txt", "rt")
    print(tf.readline()) 
    tf.close()
    
    # 二进制形式打开文件
    bf = open("f.txt", "rb")
    print(bf.readline()) 
    bf.close()
    

    四、文件内容的读取

    操作方法描述
    <f>.read(size=-1) 读入全部内容,如果给出参数,读入前size长度,s = f.read(2) # 中国
    <f>.readline(size=-1) 读入一行内容,如果给出参数,读入该行前size长度,s = f.readline() # 中国是一个伟大的国家!
    <f>.readlines(hint=-1) 读入文件所有行,以每行为元素形成列表如果给出参数,读入前hint行,s = f.readlines() # ['中国是一个伟大的国家!']

    4.1 文件的全文本操作

    4.1.1 遍历全文本:方法一

    一次读入,统一处理

    fname = input("请输入要打开的文件名称:") 
    fo = open(fname,"r")
    txt = fo.read()
    # 对全文txt进行处理
    fo.close()
    

    4.1.2 遍历全文本:方法二

    按数量读入,逐步处理

    fname = input("请输入要打开的文件名称:")
    fo = open(fname,"r")
    txt = fo.read(2)
    while txt != "":
        # 对txt进行处理
        txt = fo.read(2)
        
    fo.close()
    

    4.2 文件的逐行操作

    4.2.1 逐行遍历文件:方法一

    一次读入,分行处理

    fname = input("请输入要打开的文件名称:")
    fo = open(fname,"r")
    for line in fo.readlines():
        print(line) 
    fo.close()
    

    4.2.2 逐行遍历文件:方法二

    分行读入,逐行处理

    fname = input("请输入要打开的文件名称:")
    fo = open(fname,"r")
    for line in fo:
        print(line)
    fo.close()
    

    五、数据的文件写入

    操作方法描述
    <f>.write(s) 向文件写入一个字符串或字节流,f.write("中国是一个伟大的国家!")
    <f>.writelines(lines) 将一个元素全为字符串的列表写入文件,ls = ["中国", "法国", "美国"];f.writelines(ls) # 中国法国美国
    <f>.seek(offset) 改变当前文件操作指针的位置,offset含义如下: 0 – 文件开头; 1 – 当前位置; 2 – 文件结尾,f.seek(0) # 回到文件开头

    写入一个字符串列表

    fo = open("output.txt","w+") 
    ls = ["中国", "法国", "美国"]
    fo.writelines(ls) 
    for line in fo:
        print(line)  # (没有任何输出)
    fo.close()
    

    写入一个字符串列表

    fo = open("output.txt","w+")
    ls = ["中国", "法国", "美国"] 
    fo.writelines(ls)
    fo.seek(0)
    for line in fo:
        print(line)  # 中国法国美国
    fo.close()
    

    六、单元小结

    • 文件的使用方式:打开-操作-关闭
    • 文本文件&二进制文件,open( , )和.close()
    • 文件内容的读取:.read() .readline() .readlines()
    • 数据的文件写入:.write() .writelines() .seek()
  • 相关阅读:
    点击滚动到任意位置
    设置滚动条
    突破浏览器限制字体大小不能低于12px的限制
    font-family 字体及各大主流网站对比
    可视区尺寸改变的时候,重绘Echarts
    <input />
    switch (xx) { case xx: break ......}
    让页面随浏览器的窗口大小缩放而缩放
    对后端返回的 html 标签不识别的解决办法
    html 标签分类:块级元素、内联元素 ......
  • 原文地址:https://www.cnblogs.com/abdm-989/p/14129932.html
Copyright © 2020-2023  润新知