【100天精通python】Day19:python文件及目录操作_基本文件操作

news2024/11/17 17:26:22

目录

专栏导读 

1 文件的创建打开和关闭

2.1 使用内置函数open(),close()创建打开和关闭

2.2 使用with语句打开和关闭

2 文件的读取

2.1 读取整个文件read()

2.2  逐行读取文件内容readlines()

3 文件的写入

3.1 直接写入

3.2 写入整个文件

3.3 逐行写入文件

4 文件的复制与删除

4.1 文件复制

4.2 文件删除

5 基本文件操作的异常处理

6 文件的基本操作,完整实例演示


专栏导读 

专栏订阅地址:https://blog.csdn.net/qq_35831906/category_12375510.html


文件操作是Python中常用的任务,它们使我们能够有效地处理文本、数据和其他类型的文件。Python提供了丰富的文件操作功能,可以通过打开、读取、写入、复制和删除文件。使用内置的open()函数可以打开文件并指定读取或写入模式。读取文件内容可使用read()或readlines()函数,而写入文件内容可以用write()或writelines()函数。shutil模块可用于复制和移动文件,os模块可用于删除文件。

1 文件的创建打开和关闭

        Python提供了许多文件操作的函数和方法,使得文件的读取、写入、复制、移动等操作变得简单和高效。要对文件进行读取、写入或其他操作,需要先打开文件,完成操作后再关闭文件。打开文件时,可以使用open()函数,它接受文件路径和打开模式作为参数,并返回一个文件对象。完成文件操作后,应当使用close()方法关闭文件对象,以释放资源。

2.1 使用内置函数open(),close()创建打开和关闭

  1. 打开文件 要打开一个文件,可以使用内置的open()函数。open()函数接受两个参数:文件名和打开模式(如读取模式、写入模式等)。打开模式包括:
  • "r": 读取模式(默认)。打开文件以供读取。
  • "w": 写入模式。打开文件以供写入,如果文件已存在则会被覆盖。
  • "a": 追加模式。打开文件以供写入,如果文件已存在则会在文件末尾添加内容。
  • "x": 创建模式。创建一个新文件并打开以供写入,如果文件已存在则会报错。
  • "b": 二进制模式。用于操作二进制文件。
  • "t": 文本模式(默认)。用于操作文本文件。

下面是文件的打开和关闭示例:

# 打开文件并写入内容
file_path = "example.txt"
file = open(file_path, "w")  # 使用写入模式打开文件

file.write("Hello, this is a new file!\n")
file.write("Welcome to Python file handling.\n")

file.close()  # 关闭文件

# 打开文件并读取内容
file = open(file_path, "r")  # 使用读取模式打开文件

content = file.read()
print("文件内容:")
print(content)

file.close()  # 关闭文件

在上述示例中,首先使用open()函数以写入模式打开文件,并写入内容后关闭文件。然后使用open()函数以读取模式再次打开同一文件,并读取文件内容后再次关闭文件。

2.2 使用with语句打开和关闭

请注意,为了确保文件资源正确释放,最好使用with语句来打开文件,这样即使发生异常,也会在退出with代码块后自动关闭文件。下面是使用with语句的示例:

file_path = "example.txt"
# 使用with语句打开文件
with open(file_path, "w") as file:
    file.write("Hello, this is a new file!\n")
    file.write("Welcome to Python file handling.\n")

# 使用with语句读取文件
with open(file_path, "r") as file:
    content = file.read()
    print("文件内容:")
    print(content)

2 文件的读取

2.1 读取整个文件read()

        取文件内容可以使用read()方法读取文件的内容。read()方法将整个文件读取为一个字符串。 

示例:

file = open("example.txt", "r")
content = file.read()
print(content)
file.close()

2.2  逐行读取文件内容readlines()

        使用readlines()方法可以逐行读取文件的内容,并将每一行存储为一个表中的元素。

示例:

file = open("example.txt", "r")
lines = file.readlines()
for line in lines:
    print(line)
file.close()

3 文件的写入

3.1 直接写入

        在Python中,可以使用文件对象的write()方法来向文件中写入内容。写入操作的前提是文件已经以写入模式("w")或追加模式("a")打开。写入模式会清空文件中的内容,并将新内容写入,而追加模式会将新内容追加到文件末尾而不清空原有内容。

下面是文件写入的示例:

# 使用写入模式("w")打开文件
file_path = "example.txt"
file = open(file_path, "w")

# 向文件中写入内容
file.write("Hello, this is a new file!\n")
file.write("Welcome to Python file handling.\n")

# 关闭文件
file.close()

运行上述代码后,"example.txt"文件中的内容会被覆盖为:

 如果使用追加模式("a")打开文件,新内容将会被追加到文件末尾而不影响原有内容:

# 使用追加模式("a")打开文件
file_path = "example.txt"
file = open(file_path, "a")

# 向文件中追加内容
file.write("This is an additional line.\n")

# 关闭文件
file.close()

运行上述代码后,"example.txt"文件中的内容会变为:

  需要注意的是,在使用文件写入操作时,务必确保文件已经以写入模式或追加模式打开,并在写入完毕后及时关闭文件,以释放文件资源。另外,为了确保文件正确关闭,建议使用with语句来打开文件。

3.2 写入整个文件

要将整个内容写入文件,可以使用文件打开模式为"w""wb"来打开文件,并使用write()方法将内容写入文件。如果文件不存在,将会创建一个新文件并写入内容;如果文件已存在,写入内容将覆盖原有内容。

示例1:

file_path = "example.txt"
content = "Hello, this is a new file!\nWelcome to Python file handling."

with open(file_path, "w") as file:
    file.write(content)

结果:在example.txt文件中写入以下内容:

在上面的示例中,将整个内容content一次性写入到文件example.txt中。

3.3 逐行写入文件

        要逐行写入文件,可以使用文件打开模式为"w""wb"来打开文件,并使用write()方法逐行写入内容。每次写入后加入换行符\n来换行。

示例2:

file_path = "example.txt"
lines = ["Line 1", "Line 2", "Line 3"]

with open(file_path, "w") as file:
    for line in lines:
        file.write(line + "\n")

结果:在example.txt文件中写入以下内容:

  在上面的示例中,通过循环将列表lines中的每一行内容逐行写入到文件example.txt中,并在每行末尾添加\n换行符,以实现逐行写入。

需要注意的是,在使用文件写入时,要确保文件打开模式为写入模式"w"或追加模式"a"。同时,在使用with语句打开文件后,文件会在退出with代码块时自动关闭,确保文件资源正确释放。

在示例1中,将整个内容写入文件时,使用write()方法将整个字符串写入文件。在示例2中,逐行写入文件时,使用for循环遍历每一行内容,并使用write()方法逐行写入文件。每次写入后都加入一个换行符\n,以确保每行内容单独占据一行 。

4 文件的复制与删除

        Python中可以使用shutil模块来复制和删除文件。

4.1 文件复制

        要复制文件,可以使用shutil模块的copy()函数。copy()函数接受两个参数:源文件名和目标文件名。它会将源文件复制到目标文件,并返回目标文件的路径。

示例:

import shutil

# 源文件路径
source_file = "source.txt"
# 目标文件路径
destination_file = "destination.txt"

# 使用shutil模块的copyfile()函数进行文件复制
shutil.copyfile(source_file, destination_file)

print("文件复制成功!")

4.2 文件删除

        在Python中,可以使用os模块的remove()函数来删除文件。remove()函数接受一个参数,即要删除的文件的路径。以下是删除文件的示例代码:

import os

# 要删除的文件路径
file_to_delete = "file_to_delete.txt"

# 使用os模块的remove()函数删除文件
os.remove(file_to_delete)

print("文件删除成功!")

注意:在进行文件删除操作时,请确保操作的文件是不需要的或者备份已完成。文件删除是一个不可逆的操作,删除后无法恢复文件。因此,在删除文件之前要谨慎确认。 

import os

# 定义要删除的文件路径
file_path = 'example.txt'

try:
    # 删除文件
    os.remove(file_path)
    print(f"文件 {file_path} 删除成功")
except FileNotFoundError:
    print(f"文件 {file_path} 不存在")
except Exception as e:
    print(f"删除文件时发生错误:{e}")

 上述代码中,我们首先导入了os模块。然后,定义了要删除的文件路径,即'example.txt'。接着使用try-except语句块来处理文件删除操作可能引发的异常。如果文件存在并且删除成功,将打印出"文件 example.txt 删除成功"。如果文件不存在,则会打印出"文件 example.txt 不存在"。如果删除文件时发生其他错误,则会打印出相应的错误信息。请注意,在执行删除操作之前,请确保你有足够的权限执行该操作。

5 基本文件操作的异常处理

        在进行基本文件操作时,我们需要注意文件操作可能引发的异常,例如文件不存在、文件无法打开或读取、文件写入失败等。为了处理这些错误,我们可以使用异常处理机制来捕获并处理这些异常情况。

        在Python中,我们可以使用try-except语句来实现异常处理。在try代码块中执行文件操作,如果出现异常,则会跳转到相应的except代码块进行处理。

以下是一个基本文件操作的错误处理示例:

file_path = "example.txt"

try:
    # 打开文件以读取内容("r"表示读取模式)
    with open(file_path, "r") as file:
        content = file.read()
    print("文件内容:", content)

except FileNotFoundError:
    print("文件不存在,请确认文件路径是否正确。")

except IOError:
    print("文件读取失败,请检查文件是否可读。")

finally:
    print("文件操作完成。")

在上面的示例中,我们尝试打开文件并读取其中的内容。如果文件不存在,将会抛出FileNotFoundError异常;如果文件无法读取,将会抛出IOError异常。在try代码块中进行文件操作,如果出现异常,将会跳转到相应的except代码块进行处理。最后,不管是否发生异常,finally代码块中的代码都会执行。 

6 文件的基本操作,完整实例演示

下面是一个完整的Python实例,演示了文件的基本操作,包括创建文件、写入内容、读取内容、复制文件、删除文件和追加内容。

def create_file(file_path):
    try:
        # 创建文件并写入内容
        with open(file_path, "w") as file:
            file.write("Hello, this is a new file!\n")
            file.write("Welcome to Python file handling.\n")
        print(f"文件 {file_path} 创建成功。")

    except IOError:
        print("文件创建失败。")

def read_file(file_path):
    try:
        # 打开文件以读取内容
        with open(file_path, "r") as file:
            content = file.read()
        print("文件内容:")
        print(content)

    except FileNotFoundError:
        print("文件不存在,请确认文件路径是否正确。")

    except IOError:
        print("文件读取失败,请检查文件是否可读。")

def copy_file(source_file, target_file):
    try:
        # 读取源文件内容
        with open(source_file, "r") as source:
            content = source.read()

        # 写入目标文件
        with open(target_file, "w") as target:
            target.write(content)

        print(f"文件 {source_file} 复制成功,保存为 {target_file}。")

    except FileNotFoundError:
        print("源文件不存在,请确认文件路径是否正确。")

    except IOError:
        print("文件复制失败。")

def append_file(file_path, content_to_append):
    try:
        # 在文件末尾追加内容
        with open(file_path, "a") as file:
            file.write(content_to_append + "\n")

        print("内容成功追加到文件。")

    except FileNotFoundError:
        print("文件不存在,请确认文件路径是否正确。")

    except IOError:
        print("文件追加失败。")

def delete_file(file_path):
    try:
        # 删除文件
        import os
        os.remove(file_path)
        print(f"文件 {file_path} 删除成功。")

    except FileNotFoundError:
        print("文件不存在,请确认文件路径是否正确。")

    except IOError:
        print("文件删除失败。")

if __name__ == "__main__":
    file_path = "example.txt"
    create_file(file_path)
    read_file(file_path)

    target_file = "example_copy.txt"
    copy_file(file_path, target_file)
    read_file(target_file)

    append_content = "This line is appended to the file."
    append_file(file_path, append_content)
    read_file(file_path)

    delete_file(file_path)

运行结果如下

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

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

相关文章

SAP 密码管理(自动登录)

前提: Office excel版本2013及更高版本 SAP系统启用GUI脚本 RZ11: 参数sapgui/user_scripting 修改为 TRUE 一:安装Excel插件,并维护登陆信息 二:登陆系统 插件下载链接: (185条消息) SAP密码管理excle插件资源-C…

windows下使用pytorch进行单机多卡分布式训练

首先,pytorch的版本必须是大于1.7,这里使用的环境是: pytorch1.12cu11.6 四张4090显卡 python3.7.6使用nn.DataParallel进行分布式训练 这一种方式较为简单: 首先我们要定义好使用的GPU的编号,GPU按顺序依次为0,1,2,3…

微信小程序nodejs+vue房屋租赁交易租房平台

本系统功分为用户,经纪人,管理员三个角色,其中用户可以进行注册登陆系统,用户可以查看中介门店,查看经纪人,在线预定房源,在线租赁房源,可以发布求购房源,求租房源&#…

Mac/win开发快捷键、vs插件、库源码、开发中的专业名词

目录 触控板手势(2/3指) 鼠标右键 快捷键 鼠标选择后shift⬅️→改变选择 mac command⬅️:删除←边的全部内容 commadtab显示下栏 commandshiftz向后撤回 commandc/v复制粘贴 command ⬅️→回到行首/末 commandshift3/4截图 飞…

element dialog弹出框层级错乱问题

需要加modal-append-to-body 默认为true,遮罩层是否插入至 body 元素上,若为 false,则遮罩层会插入至 Dialog 的父元素上。 为false时的HTML结构 为true时的HTML结构 出现弹框层级错乱问题时可以modal-append-to-body是否设置为false了。

【LS科技芯团队成立】基础研究是科学之本、技术之源、创新之魂

目录 LS科技芯团队简介 团队创建人 成立本团队的核心目的 来自各个省份的大佬专家们 加入LS科技芯团队吧! LS科技芯团队简介 “LS科技芯”团队于2023年7月25日下午成立。汇聚了来自各个省份的技术博主,涵盖了电子技术,程序设计,…

软件兼容性测试中需注意的关键问题

在进行软件兼容性测试时,有一些关键问题需要特别注意,以确保测试的准确性和全面性。本文将介绍一些在软件兼容性测试中需注意的关键问题,帮助测试人员更好地进行兼容性测试工作。 首先,测试范围,测试人员需要明确测试的…

sql查询语句大全-详细讲解(格式、示例)

目录 范围查询 BETWEEN...AND in 为空 模糊查询 去重查询 AND OR 排序查询 聚合函数 1.count:计算个数 2.max:计算最大值 3.min:计算最小值 4.sum:计算和 5.avg:计算平均数 分组查询 group by 分组后…

vite / nuxt3 项目使用define配置/自定义,可以使用process.env.xxx获取的环境变量

每日鸡汤:每个你想要学习的瞬间,都是未来的你向自己求救 首先可以看一下我的这篇文章了解一下关于 process.env 的环境变量。 对于vite项目,在我们初始化项目之后,在浏览器中打印 process.env,只有 NODE_ENV这个变量&…

【HMS Core】统一扫描连续扫码、闪光灯关闭问题

【问题描述1】 使用Default View Mode进行扫码,如何实现连续扫码 【解决方案】 在默认扫码模式Default View中,功能是集成在SDK内部的,无法设置连续扫码模式等信息。 可以使用Customized View Mode这种模式,它提供了相关的api可…

【一天三道算法题】代码随想录——Day14

一. 有效的括号 题目链接:力扣 思路:无非三种情况: 1. 左侧括号多,右侧少 2. 左右侧一样多,该字符串属于有小括号字符串 3. 右侧括号多,左侧少 那么说白了就是要比较左右括号的数量,谁多&…

KNN背景分割算法

以下代码用OpenCV实现了视频中背景消除和提取的建模,涉及到KNN(K近邻算法),真题效果比较好,可以用来进行状态分析。 原理如下: 背景建模:在背景分割的开始阶段,建立背景模型。 前景…

容器部署jenkins定时构建于本地时间不一致

1. Dockerfile FROM jenkins/jenkins:2.411-jdk11 USER root #以下生成密钥方式为旧格式,因为新格式暂不能被"Publish over SSH--->Jenkins SSH Key"功能识别 RUN ssh-keygen -q -m PEM -t rsa -b 2048 -N -f /root/.ssh/id_rsa ADD ./apache-maven…

区分jdbcTemplate操作数据库和mybatis操作数据库

JdbcTemplate和MyBatis是Java中常用的两种数据库操作方式。它们在实现上有一些区别,下面我将为你介绍它们的主要特点和区别: JdbcTemplate: JdbcTemplate是Spring框架中提供的一个类,用于简化JDBC操作。使用JdbcTemplate时&#x…

【设计模式】观察者设计模式解析

目录 一、观察者模式定义 二、观察者模式角色 三、观察者模式类图 四、观察者模式实例 五、观察者模式优缺点 5.1、优点 5.2、缺点 六、观察者模式应用 6.1、Spring 中观察者模式的四个角色 6.2、coding~~~~~~ 一、观察者模式定义 观察者模式(Observer Pattern)&#…

【Unity细节】关于NotImplementedException: The method or operation is not implemented

👨‍💻个人主页:元宇宙-秩沅 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 秩沅 原创 收录于专栏:unity细节和bug ⭐关于NotImplementedException: The method or operation is not implemented.⭐…

【MATLAB第61期】基于MATLAB的GMM高斯混合模型回归数据预测

【MATLAB第61期】基于MATLAB的GMM高斯混合模型回归数据预测 高斯混合模型GMM广泛应用于数据挖掘、模式识别、机器学习和统计分析。其中,它们的参数通常由最大似然和EM算法确定。关键思想是使用高斯混合模型对数据(包括输入和输出)的联合概率…

MFC自定义控件使用

用VS2005新建一个MFC项目,添加一个Custom Control控件在窗体 我们需要为自定义控件添加一个类。项目,添加类,MFC类 设置类名字,基类为CWnd,你也可以选择CDialog作为基类 类创建完成后,在它的构造函数中注册一个新的自定义窗体,取名为"MyWindowClass" WNDCL…

3ds max 烘培世界坐标到贴图/顶点色

设置Diffuse 为ObjectNormal Normalize(objectNormal) * 0.5 0.5 把Diffuse烘培到顶点色 烘培Diffuse到贴图 模型按UV展开 右键复制 , 到mesh上粘贴 烘培到贴图 UE使用 贴图导入为BC7 float3 n ObjectNormal*2-1; return float3(n.x,n.z,n.y); // x ,z ,y

【深度学习Week3】ResNet+ResNeXt

ResNetResNeXt 一、ResNetⅠ.视频学习Ⅱ.论文阅读 二、ResNeXtⅠ.视频学习Ⅱ.论文阅读 三、猫狗大战Lenet网络Resnet网络 四、思考题 一、ResNet Ⅰ.视频学习 ResNet在2015年由微软实验室提出,该网络的亮点: 1.超深的网络结构(突破1000层&…