IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Python文件操作 -> 正文阅读

[Python知识库]Python文件操作

文件操作模式(mode)

覆盖写入模式:指覆盖文件已存在的数据

mode说明
w覆盖写入模式,文件不存在则创建, 不可读取数据
w+覆盖写入模式,文件不存在则创建,可以读取数据
wb二进制覆盖写入模式(要求写入数据是bytes),文件不存在则创建,不可读取数据
wb+二进制覆盖写入模式(要求写入数据是bytes),文件不存在则创建,可以读取数据
a追加写入模式,文件不存在则创建,不可读取
a+追加写入模式,文件不存在则创建,可读取
ab二进制追加写入模式,文件不存在则创建,不可读取
ab+二进制追加写入模式,文件不存在则创建,可读取
r读模式,文件不存在则报错,不可写入
r+读模式,文件不存在则报错,可写入
rb二进制读模式,文件不存在则报错,不可写入
rb+二进制读模式,文件不存在则报错,可写入

文件打开

# coding:utf-8

import os

if __name__ == '__main__':
    """
    open(path,mode) 返回可操作文件对象io
    path:文件路径
    mode:文件操作模式,默认r
    """
    home = open(os.path.join(os.getcwd(), 'a.txt'))
    print(home)  # <_io.TextIOWrapper name='G:\\workSpace\\py_d\\a.txt' mode='r' encoding='cp936'>
    print(type(home))  # <class '_io.TextIOWrapper'>

文件关闭

# coding:utf-8

import os

if __name__ == '__main__':
    """
    io.close() 释放文件资源
    io:通过open(path,mode)得到的可操作文件对象
    通过io.closed属性查看文件是否已经释放
    """
    f = open(os.path.join(os.getcwd(), 'a.txt'))
    print(f.closed)  # False
    f.close()
    print(f.closed)  # True

文件写入

# coding:utf-8

import os

if __name__ == '__main__':
    """
    io.write(content) 写入文件
    io.writelines(content|list(content1,content2......)) 写入文件
    io:open(path,mode)得到的文件对象且mode是写入模式
    context,content1,content2......:在二进制的写入模式下为bytes,其余为string
    write和writtelines都能写入。
    只不过writelines除了接受content这种格式,还能接受list(content1,content2......) 格式,结果等价于 io.write(content1+content2+......)
    """
    f = open(os.path.join(os.getcwd(), 'a.txt'), 'w')
    f.write('abc\n')
    f.writelines(['abc\n', 'context'])
    f.close()

    # a.txt文件内容如下:
    # abc
    # abc
    # context

    f = open(os.path.join(os.getcwd(), 'b.txt'), 'wb')
    f.write(b'abc\n')
    f.writelines([b'abc\n', b'context'])
    f.close()

    # b.txt文件内容如下:
    # abc
    # abc
    # context

文件读取

# coding:utf-8

import os

if __name__ == '__main__':
    """
    io:open(path,mode) 得到的可操作文件对象
    1.io.read() 从指针位置开始读取数据,直至文件末尾
    2.io.readline(limit=-1) 从指针位置开始读取数据,最多读完该行
      limit:读取的字符数,-1代表将一行读完。
    3.io.readlines() 从指针位置开始读取数据,直至文件末尾。将每一行的数据都放入列表中,返回一个列表
    4.io.seek(offset) 移动指针到指定位置
    """
    f = open(os.path.join(os.getcwd(), 'a.txt'), 'r')

    # read()
    print(f.read())  # abc\n abc\n context

    # readline()
    f.seek(0)
    print(f.readline(2))  # ab
    print(f.readline(5))  # 上次指针移动到b的位置,继续读 c\n

    # readlines()
    f.seek(0)
    print(f.readlines())  # ['abc\n', 'abc\n', 'context']

    f.close()

操作模式带+与不带+的区别

# coding:utf-8

import os

if __name__ == '__main__':
    '''
    权限具有两种:读和写,+代表具有另一种权限
    w:写 w+:读写
    r:读 r+ 读写
    '''

    # w+
    file_path = os.path.join(os.getcwd(), 'a.txt')
    f = open(file_path, 'w+')
    f.write('abc')
    f.seek(0)
    print(f.read())  # abc w是没有读的权限的,只有带+的才有
    f.close()

    # r+
    file_path = os.path.join(os.getcwd(), 'b.txt')
    f = open(file_path, 'r+')
    f.write('abcd')
    f.seek(0)
    f.write('efg')
    f.seek(0)
    print(f.read())  # efgd r则不能写 r+ 是替换写入,从当前指针位置替换,无可替换的字符后开始追加
    f.close()

    # a+
    file_path = os.path.join(os.getcwd(), 'c.txt')
    f = open(file_path, 'a+')
    f.write('abc')
    f.seek(0)
    f.write('efg')
    f.seek(0)
    print(f.read())  # abcefg 追加写入 a+才能读
    f.close()

使用 with + open(path,mode) 自动关闭文件

# coding:utf-8

import os

if __name__ == '__main__':
    """
    a.txt:abc
    使用 with open(path,mode) as f:
            逻辑.......
        跳出with的逻辑后自动调用f.close()关闭文件
        使用with + open 不再需要自己手动关闭文件了
    """

    file_path = os.path.join(os.getcwd(), 'a.txt')

    with open(file_path, 'r') as f:
        print(f.read())  # abc

    print(f.closed)  # True
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-03-03 16:08:24  更:2022-03-03 16:12:19 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 22:32:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码