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', '文件的改')	# 将新文件重命名成原文件
    
  • 相关阅读:
    DLL文件是什么?
    regsvr32的作用是什么?
    win10 解决.net framework 3.5 (安装报错 0x80240438)
    git 常用命令
    Wine使用初体验
    Windows 桌面快捷方式图标变白的问题
    WSL使用初体验/WIN10下安装ubuntu20.04
    Windows 重新安装Microsoft Store/用户无权进入WindowsApps文件夹
    linux命令
    linux命令
  • 原文地址:https://www.cnblogs.com/wzos/p/12632288.html
Copyright © 2011-2022 走看看