Python基础篇(八):文件和os、shutil模块

news2024/12/28 3:46:17

文件和os、shutil模块

  • 1. 文件
    • 1.1 打开文件
    • 1.2 写入文件
    • 1.3 读取文件内容
    • 1.4 关闭文件
    • 1.5 异常处理
  • 2. os模块
    • 2.1 获取当前工作目录
    • 2. 创建目录
    • 2.3 重命名文件或目录
    • 2.4 删除文件
    • 2.5 执行系统命令
  • 3. shutil模块
    • 3.1 复制文件
    • 3.2 移动文件
    • 3.3 复制目录(包括子目录和文件)
    • 3.4 删除目录(包括子目录和文件)
    • 3.5 归档压缩文件
    • 3.6 解压缩文件

1. 文件

在Python中,对文件进行操作通常涉及文件的打开、读取、写入和关闭等基本操作

1.1 打开文件

open() 函数用于打开文件,并返回一个文件对象,可以进行后续的读取和写入操作。
下面是 open() 函数的详细语法和示例:

语法:

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

参数说明:

  • file:要打开的文件名或文件路径。
  • mode:打开文件的模式,默认为 'r',表示以只读方式打开文件。常见的模式有:
    • 'r':只读模式
    • 'w':写入模式,会先清空文件内容
    • 'a':追加模式,在文件末尾追加内容
    • 'x':独占写入模式,只能创建新文件,如果文件已存在则会抛出异常
  • buffering:缓冲设置,默认为 -1,使用系统默认的缓冲区大小。
  • encoding:指定文件的编码方式,常用的编码方式有 'utf-8''gbk' 等。
  • errors:指定编码错误的处理方式。
  • newline:用于控制文件的换行符处理。
  • closefd:设置为 False 时,将不会关闭底层文件描述符。
  • opener:用于自定义开启文件的方法。

示例一:以只读模式打开文件,并读取文件内容。

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

示例二:以写入模式打开文件,并写入内容。

file = open("output.txt", "w")
file.write("Hello, world!")
file.close()

示例三:以追加模式打开文件,并在文件末尾追加内容。

file = open("output.txt", "a")
file.write("Hello again!")
file.close()

示例四: with 语句关闭文件
为了确保文件正确关闭,也可以使用 with 语句来自动管理文件的打开和关闭。

with open("example.txt", "r") as file:
    content = file.read()
    print(content)
# 文件会在代码块结束后自动关闭,无需调用 close() 方法

操作:创建一个file.txt的文件

open('file.txt', mode='w',encoding='utf-8')

执行上述语句,在执行文件的同级目录下生成了file.txt文件
在这里插入图片描述

1.2 写入文件

写入函数:

  • write(str):将字符串写入文件,返回写入字符长度
  • writelines(s):向文件写入一个字符串列表

使用文件对象的write()方法可以向文件中写入内容。

示例:

file = open("output.txt", "w")
file.write("Hello, world!")  # 写入内容到文件
file.writelines(["Hello, world!","Hello, test!"])  # 写入内容到文件
file.close()

操作:将一篇古诗词写入file.txt的文件中

with open('file.txt', mode='w',encoding='utf-8') as wf:
     wf.write("不第后赋菊\n")
     wf.writelines(["待到秋来九月八,\n","我花开后百花杀。\n",
                    "冲天香阵透长安,\n","满城尽带黄金甲。\n"])
     wf.write("      --黄巢\n")

在这里插入图片描述

1.3 读取文件内容

示例一:一次性读取整个文件内容

 with open("file.txt", "r", encoding='utf-8') as wf:
 content = wf.read()  # 读取整个文件内容
 print(content)

在这里插入图片描述

示例二:逐行读取文件内容

with open("file.txt", "r", encoding='utf-8') as wf:
 for line in wf:
     print(line)

在这里插入图片描述

示例三:读取指定字节数

file = open("example.txt", "r")
content = file.read(10)  # 读取10个字节
print(content)
file.close()

在这里插入图片描述

1.4 关闭文件

在打开文件后,务必记得使用 close() 方法关闭文件,以释放资源

示例:

file = open("example.txt", "r")
# 读取文件内容
file.close()  # 关闭文件

为了确保文件正确关闭,也可以使用 with 语句来自动管理文件的打开和关闭。

示例:使用 with 语句打开文件。

with open("example.txt", "r") as file:
    content = file.read()
    print(content)
# 文件会在代码块结束后自动关闭,无需调用 close() 方法

1.5 异常处理

在进行文件操作时,最好使用异常处理来处理可能的错误情况,以确保文件正确关闭

示例:

try:
    file = open("example.txt", "r")
    # 进行文件操作
except FileNotFoundError:
    print("文件不存在")
finally:
    file.close()

在这里插入图片描述

2. os模块

os模块提供了许多与操作系统交互的函数,包括文件和目录操作、进程管理、环境变量等。

2.1 获取当前工作目录

import os

current_dir = os.getcwd()
print("当前工作目录:", current_dir)

在这里插入图片描述

2. 创建目录

import os

os.mkdir("新目录")

在这里插入图片描述

2.3 重命名文件或目录

import os

os.rename("旧文件.txt", "新文件.txt")

在这里插入图片描述

2.4 删除文件

import os

os.remove("要删除的文件.txt")

在这里插入图片描述

2.5 执行系统命令

import os

os.system("ls -l")

在这里插入图片描述

3. shutil模块

shutil模块提供了一些高级的文件操作函数,包括复制、移动和删除文件等。

3.1 复制文件

import shutil

shutil.copy("源文件.txt", "目标文件夹/")

在这里插入图片描述

3.2 移动文件

import shutil

shutil.move("要移动的文件.txt", "目标文件夹/")

在这里插入图片描述

3.3 复制目录(包括子目录和文件)

import shutil

shutil.copytree("新目录","新目录1")

在这里插入图片描述

3.4 删除目录(包括子目录和文件)

import shutil

shutil.rmtree("要删除的目录/")

在这里插入图片描述

3.5 归档压缩文件

import shutil

shutil.make_archive("归档文件", "zip", "要压缩的文件夹/")

在这里插入图片描述

3.6 解压缩文件

import shutil

shutil.unpack_archive("压缩文件.zip", "解压目标文件夹/")

在这里插入图片描述

以上示例展示了os模块和shutil模块的一些常见用法。这些模块提供了许多其他功能,如遍历目录、修改权限、获取文件信息等。
官方文档:os模块文档 和 shutil模块文档

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

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

相关文章

【Linux】死锁(更新中)

文章目录 一. 什么是死锁二. 死锁产生的四个条件三. 避免死锁1. 死锁检测算法2. 银行家算法 结束语 一. 什么是死锁 死锁是指一组进程中的各个进程均占有不会释放的资源,但因互相申请被其他进程所占用的不会释放的资源,而处于一种永久等待的状态。 就像…

Elasticsearch是什么,如何学习Elasticsearch,整合SpringBoot

目录 一、是什么Elasticsearch 二、Elasticsearch,整合SpringBoot 三、Elasticsearch的优势和应用场景 一、是什么Elasticsearch Elasticsearch是一个开源的搜索引擎,它采用Java语言编写,使用Lucene作为核心搜索引擎,并在其基…

2.文本分析

目录 1. 词频统计--语料库的构建 1. 词频统计–语料库的构建 文本挖掘:将文本信息转换为可利用的知识。通常,对大量文件的归类,一般通过建立不同的文件夹,来保存不同的文章。 同样的,将需要分析的【文本文件】读取到…

Shell - 01_shell的概述

一、shell 概述 1.shell 的两层含义: 既是一种应用程序,又是一种程序设计语言 a.作为应用程序: 交互式地解释、执行用户输入的命令,将用户的操作翻译成机器可以识别的语言,完成相应功能。称之为 shell 命令解析器。shell 是用户和…

机器学习对风险管理的重要性

✏️写作:个人博客,InfoQ,掘金,知乎,CSDN 📧公众号:进击的Matrix 🚫特别声明:原创不易,未经授权不得转载或抄袭,如需转载可联系小编授权。 机器学…

logback-spring.xml详解

本文来写说下logback-spring.xml相关的知识与概念 文章目录 概述configuration元素定义上下文名称定义变量appender组件 概述 对于xml日志文件的配置,大多数人第一次接触时有一种望而生畏的感觉,其实如果仔细分析,会发现核心的部分只有三个元…

【黄啊码】为什么程序员大都鄙视php?

“PHP 是世界上最好的语言”。。。“吗”?相信很多人跟我一样,都会在后边打个问号。这些年以来,“PHP 已死”、“PHP 行将消亡”之类的言论甚嚣尘上,由此看得出,很多开发人员讨厌 PHP。这又是为什么呢?PHP …

Nginx配置https证书遇到的一个问题

前言 今天在给一个站点配置 HTTPS 证书的时候,遇到了一个问题,写此文章记录一下解决过程。 环境 Ubuntu 22.04 Nginx 1.18 过程 今天给一个站点申请了 HTTPS 证书,然后在 Nginx 中进行配置,Nginx 的 SSL 配置如下&#xff1a…

Matplotlib---饼图

1. 饼图 pie()函数用于绘制饼图,其基本语法如下: plt.pie(x, explodeNone, labelsNone, colorsNone, autopctNone, startangleNone, shadowFalse) 其中,参数含义如下: - x: 数组,表示饼图中每个部分的数值大小。 -…

手机技巧:iOS微信 8.0.38正式版更新功能一览

目录 1、安装包变大了很多 2、拍摄功能优化 3、订阅号消息展示优化 4、转账界面优化 5、视频号关注展开更多 7、朋友圈置顶(灰度测试) 8、搜一搜页面新增问一问功能 2023.06.09大家期待已久的IOS微信8.0.38正式版终于发布了,今天就来给…

第四章网络层

1.网络层概述 网络层的主要任务是实现网络互连,进而实现数据包在各网络之间的传输。 要实现网络层任务,需要解决以下主要问题: 网络层向运输层提供怎样的服务(“可靠传输”还是“不可靠传输”)网络层寻址问题路由选择问题 因特网(Internet)是目前全世界用…

idea快捷键和常用设置和maven

因为Eclipse快捷键较为统一,因此我们提前设置好,统一idea中的快捷键遵从Eclipse的快捷键。 常用设置 快捷键的统一 设置–按键映射–Eclipse 自动导包 设置–编辑器–常规–自动导入 这个操作主要是为了正确导包,当我们将某行代码注释的…

【物联网无线通信技术】LoRa从理论到实现(SX1268)

文章先从LoRa的物联网通信技术前辈们讲起,慢慢引出了这种功耗又低,距离又远的无线通信技术,然后又似庖丁解牛一般,从物理层到链路层,详细的介绍了LoRa这种技术的组成,最后以一种实际的原理与嵌入式软件实现…

MySQL实战解析底层---如何正确地显示随机消息

目录 前言 内存临时表 磁盘临时表 随机排序方法 前言 现在说说MySQL中的另外一种排序需求,希望能够加深对MySQL排序逻辑的理解从一个单词表中随机选出三个单词这个表的建表语句和初始数据的命令如下: 为了便于量化说明,在这个表里面插入…

ChatGPT科研阅读论文应用插件(txyz.ai)使用初探

前言 ChatGPT没有办法直接阅读论文,但使用txyz.ai插件可以使用ChatGPT来帮助快速得到论文中想要的信息,特别是对于专业名词较多的文章,而且可以问它关于这篇文章的问题,能够加快研究的进程。刚开始了解到这个应用是一个ChatGPT插件…

06- c语言指针 (C语言)

一 指针的引入 1、一般把内存中的一个字节称为一个内存单元。 2、为了正确地访问这些内存单元,必须为每个内存单元编上号。根据一个内存单元的编号即可准确地找到该内存单元。内存单元的编号也叫做地址,通常也把这个地址称为指针。 3、如果在程序中定义…

设计模式之策略模式笔记

设计模式之策略模式笔记 说明Strategy(策略)目录策略模式示例类图抽象策略类策略A类策略B类策略C类促销员类测试类 说明 记录下学习设计模式-策略模式的写法。JDK使用版本为1.8版本。 Strategy(策略) 意图:定义一系列的算法,把它们一个个封装起来,并且…

【数据分享】全国县市2000-2021年综合经济数据(地区生产总值\一二三产业增加值等)

《中国县域统计年鉴》是一部全面反映我国县域社会经济发展状况的资料性年鉴,收录了上一年度全国2000多个县域单位的基本情况、综合经济、农业、工业、教育、卫生、社会保障等方面的资料。 本篇文章我们给大家带来从2001年—2022年《中国县域统计年鉴》整理的数据—…

MySQL:事务

事务 在介绍事务之前,我们先来了解一个案例: 在一个买票的软件中,当客户端A检查还有一张票时,将票卖点,但是还没有更新数据库,客户端B检查了票数,发现大于0,于是又卖掉了一张票。然…

ROS:通信机制

目录 一、通信机制简介二、话题通信机制2.1话题通信简介2.2话题通信实操(C)2.2.1分析2.2.2发布方代码2.2.3订阅方代码2.2.4配置CMakeLists.txt2.2.5执行2.2.6注意 2.3话题通信实操(python)2.3.1分析2.3.2发布方代码2.3.3订阅方代码…