Python(18)--文件输入/输出 Ⅱ

news2024/12/31 4:57:55

开头

大家好!我是码银🥰
欢迎关注🥰:
CSDN:码银
公众号:码银学编程

前言

前一篇文章(python(17)–文件的输入/输出-CSDN博客)介绍了如何操作文本文件和二进制文件,以及对应文件的写入和读取。这篇文章继续学习文件的输入/输出操作😆。

正文

文件的删除

文件的删除可以使用os模块的remove()函数来删除文件,这样我们可以编写一个函数以此达到删除文件的作用,下面是一个示例代码:

import os

def delete_file(file_path):
    try:
        os.remove(file_path)
        print(f"文件 {file_path} 已被删除")
    except OSError as e:
        print(f"删除文件时出错: {e.strerror}")

delete_file("file.txt")

在这个示例中,delete_file函数接受一个文件路径作为参数,然后尝试删除该文件。如果文件成功被删除,它会打印一条消息说文件已被删除。如果删除文件时发生错误,它会捕获OSError异常并打印出错误消息。

文件的复制

关于文件的复制,我们就要用另一个库来实现了,shutil是Python的一个高级文件操作模块,它与os模块形成互补关系。os模块主要提供了文件或文件夹的新建、删除、查看等方法,以及对文件以及目录的路径操作。而shutil模块则提供了移动、复制、压缩、解压等操作,恰好与os模块形成互补,两者共同使用,基本能完成所有文件的操作。

import shutil

def copy_file(src, dst):
    try:
        shutil.copy(src, dst)
        print(f"文件 {src} 已成功拷贝到 {dst}")
    except Exception as e:
        print(f"拷贝文件时出错: {e}")

copy_file("filename.txt", "D://pyprogect//file.txt")

copy_file()函数中,第一个位置是原始文件,第二个文件是目标文件位置。然后,使用shutil.copy函数将源文件拷贝到目标路径。如果文件成功被拷贝,它会打印一条消息说文件已被成功拷贝。如果拷贝文件时发生错误,它会捕获异常并打印出错误消息。

文件的重命名

如果存在文件“filename.txt”就将其重新命名为"666.txt",另外还有三个异常判断语句,提高程序的健壮性。

import os  
  
if __name__ == "__main__":  
    try:  
        li = os.listdir(".")  # 判断当前目录  
        print(li)  
        if "filename.txt" in li:  
            os.rename("filename.txt", "666.txt")  
    except FileNotFoundError:  
        print("文件 'filename.txt' 不存在")  
    except PermissionError:  
        print("没有足够的权限执行此操作")  
    except Exception as e:  
        print(f"发生未知错误: {e}")

文件内容的查找

with open('filename.txt', 'r') as file:

    content = file.read()# 读取文件内容

count = content.count("hello")# 统计字符串 "hello" 出现的次数

print("字符串出现次数: {} 次".format(count))# 输出结果

次数截图
这里还有一版:
这段代码是用于从名为 “filename.txt” 的文件中查找字符串 “hello” 的出现次数。如果文件不存在或无法读取,它会打印相应的错误消息。如果发生其他错误,它也会捕获并打印错误消息。

import re

if __name__ == "__main__":
    try:
        with open("filename.txt", "r") as f:
            count = 0
            for s in f:
                matches = re.findall("hello", s)
                if matches:
                    count += len(matches)
            print(f"查找到 {count} 个 hello")
    except FileNotFoundError:
        print("文件不存在")
    except PermissionError:
        print("无法读取文件")
    except Exception as e:
        print(f"发生错误:{e}")

欢迎关注:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1400578.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

设计亚马逊按销售排名功能

1: 定义 Use Cases 和 约束 Use cases 作用域内的Use Case Service 通过目录计算过去一周内最受欢迎的产品User 通过目录去View过去周内最受欢迎的产品Service 有高可用 作用域外 整个电商网站 设计组件(只是计算销售排名) 约束和假设…

【Python】模块

🚩 WRITE IN FRONT 🚩 🔎 介绍:"謓泽"正在路上朝着"攻城狮"方向"前进四" 🔎🏅 荣誉:2021|2022年度博客之星物联网与嵌入式开发TOP5|TOP4、2021|2222年获评…

C++ :命名空间域

目录 冲突与命名: 举个例子: 全局与局部: 域作用限定符: 命名空间域: 冲突与命名: 在C语言中,我们通常会使用stdlib.h 而stdlib.h 本质上是一个函数的库,在程序中使用的大多数…

django邮件通知功能-

需求: 1:下单人员下订单时需要向组长和投流手发送邮件通知 2:为何使用邮件通知功能?因为没钱去开通短信通知功能 设计 1:给用户信息表添加2个字段 第一个字段为:是否开通邮件通知的布尔值 第二个字段为: 用…

Python 折线图的绘制(Seaborn篇-04)

Python 折线图的绘制(Seaborn篇-04)         🍹博主 侯小啾 感谢您的支持与信赖。☀️ 🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹…

详解Redisson

第1章:Redisson简介 大家好,我是小黑,咱们今天来聊聊Redisson,Redisson不只是简单地对Redis进行了封装,它还提供了一系列高级的分布式Java数据结构,像是分布式锁、原子长整型这种。 首先,Redi…

React 初次接触

背景 还是为了完善高大上的在线文档系统,虽然比着葫芦画瓢的修改了一些所谓的代码,慢慢的才发现,原来这就是传说中的React,所以有比较又要囫囵吞枣一下React。 基本原理 参照《React技术揭秘》 网上有电子版 ,应该是…

Makefile编译原理 条件判断语句

一.makefile中支持条件判断语句 可以根据条件的值来决定make的执行 可以比较两个不同变量或者变量和常量值 条件判断语句语法说明: 条件判断关键字: 条件判断语句注意点: 条件判断语句之前可以有空格,但不能没有Tab字符&#x…

【Java】SpringBoot实现事件监听(异步执行)

在Spring Boot中,事件监听是一种机制,通过该机制,你可以定义和触发自定义的事件,以及在应用程序中注册监听器来响应这些事件,提供了一种解耦的方式来处理应用程序中的事件。 文末有源码gitee地址!拉取可进…

MySQL基础笔记(8)多表查询

一.多表关系介绍 项目开发中,在进行数据库表结构设计时,会根据业务需求及业务模块之间的关系,分析并设计表结构,由于业务之间相互关联,所以各个表结构之间也会存在着各种联系,分为如下3类: 一对…

【C++提高编程(二)】

一、STL初识 1.1、STL的诞生 长久以来,软件界一直希望建立一种可重复利用的东西 C的面向对象和泛型编程思想,目的就是复用性的提升 大多情况下,数据结构和算法都未能有一套标准,导致被迫从事大量重复工作 为了建立数据结构和算法的一套标…

神经网络算法 —— 一文搞懂Transformer !!

文章目录 前言 一、Transformer的本质 1. Transformer架构 2. Encoder-Decoder(编码器-解码器) 二、Transformer的原理 1. Multi-Head Attention(多头自注意力) 2. Scaled Dot-Product Attention(缩放点积注意力&#…

坦克大战游戏代码

坦克大战游戏 主函数战场面板开始界面坦克父类敌方坦克我方坦克子弹爆炸效果数据存盘及恢复图片 主函数 package cn.wenxiao.release9;import java.awt.event.ActionEvent; import java.awt.event.ActionListener;import javax.swing.JFrame; import javax.swing.JMenu; impor…

2024年【金属非金属矿山(地下矿山)安全管理人员】证考试及金属非金属矿山(地下矿山)安全管理人员模拟考试题库

题库来源:安全生产模拟考试一点通公众号小程序 2024年【金属非金属矿山(地下矿山)安全管理人员】证考试及金属非金属矿山(地下矿山)安全管理人员模拟考试题库,包含金属非金属矿山(地下矿山&…

RabbitMQ-消息延迟

一、死信交换机 1、描述 一个队列接收到的消息有过期时间,消息过期之后,如果配置有死信队列,消息就会进去死信队列。 2、图解 3、过程 当生产者将消息发送到exchange1,然后交换机将消息路由到队列queue1,但是队列que…

探索指针的奇妙世界,程序中的魔法箭头(上)

目录 一.指针是什么二.指针和指针类型1.指针加减整数2.指针的解引用 三.野指针1.野指针形成的原因(1)指针未初始化指针越界访问 2.如何规避野指针(1)指针初始化(2)小心指针越界(3)指…

SpringSecurity+JWT前后端分离架构登录认证

目录 1. 数据库设计 2. 代码设计 登录认证过滤器 认证成功处理器AuthenticationSuccessHandler 认证失败处理器AuthenticationFailureHandler AuthenticationEntryPoint配置 AccessDeniedHandler配置 UserDetailsService配置 Token校验过滤器 登录认证过滤器接口配置…

理解PCIE设备透传

PCIE设备透传解决的是使虚拟机直接访问PCIE设备的技术,通常情况下,为了使虚拟机能够访问Hypervisor上的资源,QEMU,KVMTOOL等虚拟机工具提供了"trap and emulate", Virtio半虚拟化等机制实现。但是这些实现都…

用通俗易懂的方式讲解:使用 Langchain 和 Hugging Face ,轻松实现大模型 RAG 用法

检索增强生成(RAG)是一种与预训练的大型语言模型(LLM)和自己的数据一起工作的模式,用于生成响应。 现在我将向大家介绍在代码中实现 RAG 的过程。让我们开始使用 Langchain 和 Hugging Face 实现 RAG! 文章…

matlab appdesigner系列-常用14-树(复选框)

之前系列常用9,为单个复选框。树,就是多个复选框形成的选项组 示例:列举湖北省的几个城市 湖北省 武汉 宜昌 襄阳 荆州 1)将树(复选框)拖拽到画布上,方式1就是:文字可以在右侧…