当前位置: 首页 > news >正文

记录_文件操作

好记心不如烂笔头

    def bao_cun(self,neiRong, filename):
        try:
            with open(filename, 'a', encoding='utf-8') as f:
                f.write(neiRong + '\n\n')  
                return True
        except PermissionError:
            print(f"错误:文件 {filename} 被其他程序占用")
            return False
        except Exception as e:
            print(f"未知错误:{str(e)}")
            return False

代码解释

  1. with open(filename, ‘a’, encoding=‘utf-8’) as f:
    这行代码主要是使用 open() 函数打开一个文件,并且运用 with 语句来管理文件的上下文。以下是对这行代码各部分的详细解释:
    open() 函数:此函数是 Python 内置的,其作用是打开文件。它接收多个参数,在这段代码里用到了以下三个参数:
    filename:这是一个变量,代表要打开的文件的名称或者路径。你需要确保这个文件存在,或者你有在指定路径创建文件的权限。
    ‘a’:这是文件的打开模式,‘a’ 代表追加模式(append)。当以追加模式打开文件时,若文件存在,新写入的内容会被添加到文件的末尾;若文件不存在,则会创建一个新文件。
    encoding=‘utf-8’:这个参数指定了文件的编码方式,‘utf-8’ 是一种通用的字符编码,能够处理多种语言的字符。
    with 语句:with 语句用于创建一个上下文管理器,它会自动处理文件的打开和关闭操作。当代码块执行完毕或者出现异常时,with 语句会自动关闭文件,从而避免资源泄漏。
    as f:这部分将打开的文件对象赋值给变量 f,后续就可以使用这个变量来对文件进行读写操作。
  2. f.write(neiRong + ‘\n\n’)
    这行代码的作用是向打开的文件里写入内容,下面是详细解释:
    f.write():这是文件对象 f 的一个方法,其作用是向文件中写入字符串。
    neiRong:这是一个变量,代表要写入文件的内容。你需要确保这个变量是一个字符串类型。
    \n\n’:’\n’ 是换行符,添加两个换行符 ‘\n\n’ 是为了在写入的内容后面添加两个空行,以此作为章节分隔。
    neiRong + ‘\n\n’:这是将变量 neiRong 和两个换行符拼接成一个新的字符串,然后将这个新字符串写入文件。
    总结
    这两行代码的整体作用是:以追加模式打开指定的文件,把变量 neiRong 所代表的内容写入文件,并且在内容后面添加两个换行符作为章节分隔,最后自动关闭文件。

open() 函数可通过不同模式来打开文件

1. 只读模式
‘r’:这是默认的打开模式。当使用该模式打开文件时,仅能读取文件内容,不能进行写入操作。若文件不存在,会抛出 FileNotFoundError 异常。示例代码如下:

try:
    with open('example.txt', 'r', encoding='utf-8') as f:
        content = f.read()
        print(content)
except FileNotFoundError:
    print("文件未找到")

2. 写入模式
‘w’:此模式用于写入文件。若文件存在,会清空文件原有内容;若文件不存在,则会创建一个新文件。示例代码如下:

with open('example.txt', 'w', encoding='utf-8') as f:
    f.write('这是新写入的内容')

3. 追加模式
‘a’:以追加模式打开文件。若文件存在,新写入的内容会被添加到文件末尾;若文件不存在,则会创建一个新文件。示例代码如下:

with open('example.txt', 'a', encoding='utf-8') as f:
    f.write('\n这是追加的内容')

4. 二进制模式
‘b’:该模式用于以二进制形式打开文件,可与其他模式(如 ‘r’、‘w’、‘a’)组合使用,像 ‘rb’(二进制只读)、‘wb’(二进制写入)、‘ab’(二进制追加)。常用于处理非文本文件,例如图片、音频、视频等。示例代码如下:

# 以二进制只读模式打开图片文件
with open('image.jpg', 'rb') as f:
    data = f.read()

# 以二进制写入模式将图片数据写入新文件
with open('new_image.jpg', 'wb') as f:
    f.write(data)

5. 读写模式
‘r+’:以读写模式打开文件,文件指针位于文件开头,可读取和写入文件。若文件不存在,会抛出 FileNotFoundError 异常。示例代码如下:

try:
    with open('example.txt', 'r+', encoding='utf-8') as f:
        # 读取文件内容
        content = f.read()
        print(content)
        # 写入新内容
        f.write('这是新写入的内容')
except FileNotFoundError:
    print("文件未找到")

‘w+’:以读写模式打开文件,若文件存在,会清空文件原有内容;若文件不存在,则会创建一个新文件。文件指针位于文件开头。示例代码如下:

with open('example.txt', 'w+', encoding='utf-8') as f:
    # 写入内容
    f.write('这是新写入的内容')
    # 将文件指针移到文件开头
    f.seek(0)
    # 读取文件内容
    content = f.read()
    print(content)

总结
这些是 open() 函数常见的打开模式,你可以依据实际需求来选择合适的模式。在使用时,要注意文件是否存在、文件指针的位置以及文件内容的覆盖和追加等问题。

文件对象f方法

读取相关方法

f.read(size=-1)
作用:从文件中读取指定数量的字节或字符(取决于文件的打开模式,文本模式下是字符,二进制模式下是字节)。如果不指定 size 或者 size 为负数,则读取整个文件内容。

with open('example.txt', 'r', encoding='utf-8') as f:
    content = f.read()
    print(content)

f.readline(size=-1)
作用:从文件中读取一行内容。如果指定了 size,则最多读取 size 个字符或字节。

with open('example.txt', 'r', encoding='utf-8') as f:
    line = f.readline()
    while line:
        print(line.strip())
        line = f.readline()

f.readlines(hint=-1)
作用:读取文件中的所有行,并将每行作为一个元素存储在列表中返回。hint 参数用于指定大致读取的字节数,如果未指定或为负数,则读取整个文件。

with open('example.txt', 'r', encoding='utf-8') as f:
    lines = f.readlines()
    for line in lines:
        print(line.strip())
写入相关方法

f.write(string)
作用:将字符串 string 写入文件。返回写入的字符数(在文本模式下)或字节数(在二进制模式下)。

with open('example.txt', 'w', encoding='utf-8') as f:
    f.write('Hello, World!\n')

f.writelines(lines)
作用:将字符串列表 lines 中的每个字符串依次写入文件,不会自动添加换行符,需要手动添加。

lines = ['Line 1\n', 'Line 2\n', 'Line 3\n']
with open('example.txt', 'w', encoding='utf-8') as f:
    f.writelines(lines)
文件指针操作方法

f.seek(offset, whence=0)
作用:移动文件指针到指定位置。offset 是偏移量,whence 指定偏移的参考位置,0 表示从文件开头,1 表示从当前位置,2 表示从文件末尾。

with open('example.txt', 'r+', encoding='utf-8') as f:
    # 移动文件指针到文件开头
    f.seek(0)
    content = f.read()
    print(content)

f.tell()
作用:返回文件指针当前的位置。

with open('example.txt', 'r', encoding='utf-8') as f:
    position = f.tell()
    print(f"当前文件指针位置: {position}")
    f.read(5)
    position = f.tell()
    print(f"读取 5 个字符后文件指针位置: {position}")
其他方法

f.close()
作用:关闭文件。虽然使用 with 语句时会自动关闭文件,但在某些情况下,手动调用 close() 方法也是必要的。

f = open('example.txt', 'r', encoding='utf-8')
try:
    content = f.read()
    print(content)
finally:
    f.close()

f.flush()
作用:将文件缓冲区中的数据立即写入文件。通常在需要确保数据已经写入磁盘时使用。

with open('example.txt', 'w', encoding='utf-8') as f:
    f.write('Some data')
    f.flush()  # 确保数据立即写入文件

f.truncate(size=None)
作用:将文件截断为指定的大小。如果不指定 size,则将文件截断到当前文件指针位置。

with open('example.txt', 'r+', encoding='utf-8') as f:
    f.truncate(10)  # 将文件截断为 10 个字符
http://www.dtcms.com/a/113439.html

相关文章:

  • C# 程序脱壳,去除强签名StrongNameRemove
  • python加载训练好的模型并进行叶片实例分割预测
  • B树和B+树的区别(B Tree B+ Tree)
  • Windows扫描功能在哪?如何打开?如何使用自带的扫描程序进行扫描
  • Python实现ssh自动连接
  • 对比学习中的NCE(Noise-Contrastive Estimation)和InfoNCE(SimCLR)损失函数+案例(附SimSiam分析)
  • C-S模式之实现一对一聊天
  • 【MATLAB第113期】基于MATLAB的EFAST扩展傅里叶幅度敏感性分析方法(有目标函数)
  • Linux 下 日志系统搭建全攻略
  • 【算法】滑动窗口
  • 使用 ResUNet++、增强对结直肠息肉分割的图像识别综合研究
  • 【嵌入式学习5】PyQt5注册界面 - 自定义信号和槽
  • Unity:Simple Follow Camera(简单相机跟随)
  • 讯飞语音听写(流式版)开发指南
  • BMC PSL function(42)-floor()
  • 第四章 react-redux,@reduxjs/toolkit依赖,学习
  • MySQL慢查询日志通俗指南
  • Java三大循环结构深度解析:从入门到精通的实践指南
  • 一.数据库基础知识
  • 大衣的旅行--前缀和+二分
  • 特殊的质数肋骨--dfs+isp
  • Python----TensorFlow(TensorFlow介绍,安装,主要模块,高级功能)
  • esp32cam 开发板搭载ov3660摄像头在arduino中调用kimi进行图像识别
  • 【Unity】导入资源shader报错
  • Latex入门之超详细的Latex环境配置教程
  • 7-1 素数求和(线性筛实现)
  • python | 获取字符串中某个字符的所有位置:find(),enumerate(),re.finditer,index()
  • JSON介绍及使用
  • MathType安装
  • 写.NET可以指定运行SUB MAIN吗?调用任意一个里面的类时,如何先执行某段初始化代码?