zoukankan      html  css  js  c++  java
  • 八、文件的基本操作

    1. 打开文件

    open 内置函数(open底层调用的是操作系统的接口)

    语法f = open('路径', encoding='编码', mode='模式')

    • f:变量名,文件句柄(命名:f_h、file_handler)
    • 路径:文件的地址,可能报错原因如下:
      • 文件名不能使用数字
      • 文件编码解码不一致
      • 路径的反斜杠与字母转义
        • 需要双反斜杠再转义
        • 字符串前加r,声明路径
    • encoding:指定打开编码,默认操作系统的编码
      • windows:gbk
      • linux:utf-8
      • mac:utf-8
    • mode:文件的打开方式,默认以读的模式

    2. 文件的操作步骤

    1. 打开文件,并赋值给一个文件句柄
    2. 对文件句柄操作
    3. 关闭文件

    注意:文件在同一目录下称相对路径,可仅输入文件名

    f = open('H:你好.txt', encoding='utf-8', mode='r')	# 打开文件
    print(f.read())		# 输出读取的文件
    f.close()			# 关闭文件
    

    3. 文件操作模式

    b(rb,wb,ab)模式:以bytes方式打开,操作非文本文件,读取到的内容是字节类型,写入时也需要提供字节类型(图片、视频、音频)不用加 encoding='utf-8'

    r 读模式(默认)
    • r:读取
    • rb:以bytes模式读
    • r+:读取并追加(先读后写)
    w 写模式

    文件不存在,创建文件写入;文件存在,清空内容再写入

    注意:文件没关闭前写入的每条都会存在,文件关闭后再重新再打开写入,才会覆盖

    • w:写入

    • wb:以bytes模式写入

    • w+:写入并读取(先写后读)

    a 追加模式

    文件不存在,创建文件写入;文件存在,在原文件的最后面追加内容

    • a:追加
    • ab:以bytes模式追加
    • a+:以读的方式打开,并将光标移到文件尾部

    4. 文件操作的功能

    • 读取

      • 全读:read()
      • 指定读取字符数量:read(n)
        • 文件打开方式为文本模式时,代表读取n个字符
        • 文件打开方式为b模式时,代表读取n个字节
      • 读取一行:readine()(自带换行)
      • 返回列表:readlines()(列表中的每个元素是源文件的每一行)
      • for循环:每次循环读一行,在内存中只占一行的内存(大文件)
    • 写入write('内容')

    • 光标操作

      注意:隐藏的换行 /n 要占两个字节

      • 获取光标的位置:tell()(单位:字节)

      • 调整光标的位置:seek(偏移量,起始点)(单位:字节)

        • 偏移量:需要移动偏移的字节数,负数表示从倒数第几位开始
        • 起始点:表示要从哪个位置开始偏移,0表示从头,1表示当前位置,2表示结尾,默认值为 0

        返回值:操作成功,则返回新的光标位置;如果操作失败,返回 -1

    • 强制刷新flush() 一般情况下,文件关闭后会自动刷新缓冲区,但有时需要在关闭前刷新


    copy工具

    f = open('图1.jpg', mode='rb')    # 打开文件
    content = f.read()    # 读取文件
    f.close()			# 关闭文件
    f1 = open('图2.jpg', mode='wb')  # 创建并写入
    f1.write(content)     # 写入赋值,完成复制
    f1.close()			# 关闭文件
    

    5. 上下文管理

    语法with open语句, open语句:

    • 可同时打开多个文件进行操作,以逗号分隔(续航符)
    • 不用手动关闭文件句柄(一定时间自动关闭)
    with open('文件的读',encoding='utf-8') as f1,
            open('文件的写',encoding='utf-8',mode='w')as f2:
        data = f1.read()        # 读取
        f2.write(data)      	# 写入
    

    6. 文件的改

    原理

    1. 以读的模式打开原文件
    2. 以写的模式创建一个新文件
    3. 将原文件的内容读出来修改成新内容,写入新文件
    4. 将原文件删除
    5. 将新文件重命名成原文件
    import os         # 导入os模块
    with open('文件的改',encoding='utf-8') as f1,
            open('文件的改.bak', encoding='utf-8', mode='w') as f2:
    # 将原文件的内容读出来修改成新内容,写入新文件
        for line in f1:
            new_line = line.replace('SB', 'alex')
            f2.write(new_line)
    os.remove('文件的改')		# 将原文件删除
    os.rename('文件的改.bak', '文件的改')	# 将新文件重命名成原文件
    
  • 相关阅读:
    hdu 3666 差分约束系统
    hdu 1198农田灌溉
    常微分方程(阿諾爾德) Page 45 相空間,相流,運動,相曲線 註記
    高等微積分(高木貞治) 1.4節 例2
    常微分方程(阿諾爾德) Page 45 相空間,相流,運動,相曲線 註記
    解析函數論 Page 29 命題(2) 函數模的有界性
    高等微積分(高木貞治) 1.4節 例2
    解析函數論 Page 29 命題(1) 有界閉集上的一致連續性
    解析函數論 Page 29 命題(3) 模的下界的可達性
    解析函數論 Page 29 命題(2) 函數模的有界性
  • 原文地址:https://www.cnblogs.com/wzos/p/12632288.html
Copyright © 2011-2022 走看看