0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何用Python来实现文件系统的操作功能

科技绿洲 来源:Python实用宝典 作者:Python实用宝典 2023-10-30 14:27 次阅读

近几年随着Python的热度不断上涨,人们渐渐使用这门编程语言来进行一些自动化操作,以节省重复劳动带来的效率低下,那么必定会涉及到对 文件系统的操作 ,包括文件的增、删、改、查等等,今天小编就来介绍一下如何用Python来实现这些功能

输出当前的路径

我们可以通过Python当中的OS库来获取当前文件所在的位置

import os
os.getcwd()

路径的拼接

我们通过os.path.join()方法来实现

os.path.join('output', 'Book1.xlsx')

output

outputBook1.xlsx

确认某文件夹或者是文件是否存在

我们先来看如何来确认文件夹是否存在,同样也是通过OS模块

os.path.exists('directory_name')

同样的道理,要是我们查看一下某个文件是否存在的时候,可以这么做

os.path.exists('path/file_name')

建立文件夹目录

然后我们来看一下如何新建一个文件夹

os.mkdir("文件夹名称")

当然要是文件夹目录已经提前存在的情况下,上述的代码自然会报错,所以我们通常会先检查一下是否已经存在

if not os.path.exists('文件夹名称'):
    os.mkdir('文件夹名称')

当然我们有时候需要在已建的文件夹下创建子文件夹,例如下图

图片

这个时候要是引用os.mkdir()方法或许会稍显繁琐,这时我们可以通过os.mkdirs()方法来实现

os.makedirs(os.path.join('test_dir', 'level_1', 'level_2', 'level_3'))

罗列出当前目录下所包含的所有文件

代码如下

os.listdir('文件夹名称')

但是有时候我们可能想例如搜寻一下当前目录下的所有文件中以“py”结尾的文件,我们可以通过通配符来实现,代码如下

list(glob(os.path.join('.', '*.py')))

上面提到的glob模块能够快速查找我们想要的目录和文件,它支持***?[]这四个通配符

移动文件

要是我们想在不同的目录文件夹之下移动文件,该怎么操作呢?这里我们介绍Python当中的shutil模块,假设我们想要将当前目录下的几个csv文件移动到“test_dir”目录文件夹之下,代码如下

import shutil

for file in list(glob(os.path.join('.', '*.csv'))):
    shutil.move(file, 'test_dir')

复制文件

当我们想要复制文件的时候,也可以使用shutil模块,例如我们想要将几个“test_dir”目录文件夹下的csv文件复制到“output”目录文件夹之下,代码如下

shutil.copy(os.path.join('test_dir', 'data.csv'), 'output')

除此之外,我们还能够对粘贴过去的文件重命名,代码如下

shutil.copy(os.path.join('test_dir', 'data.csv'),
            os.path.join('output', 'data_2.csv'))

删除文件

我们来看一下删除文件该如何实现?os.remove()方法可以完成删除文件的功能,

os.remove(os.path.join('output', 'data_2.csv'))

当我们想要删除一整个目录文件夹的时候,可以使用os.rmdir()方法,当然只仅限于是空的目录文件夹

os.rmdir(os.path.join('test_dir', 'level_1', 'level_2', 'level_3'))

而对于目录文件夹下存在文件的,并不是空的目录文件夹,我们还是需要用到shutil模块,代码如下

shutil.rmtree("test_delete")

或者是

shutil.rmtree(os.path.join("test_delete", "test_1_delete"))

创建和解压压缩包

谈及到操作压缩包相关的内容,就不得不说zipobj这个模块了

  • 创建一个压缩包

这里我们要用到的是zipfile模块当中的write()方法

file_lists = list(glob(os.path.join('.', '*.xlsx')))

with zipfile.ZipFile(r"我创建的压缩包.zip", "w") as zipobj:
    for file in file_lists:
        zipobj.write(file)
  • 读取压缩包当中的文件信息

通过zipfile模块当中的namelist()方法来实现

with zipfile.ZipFile("我创建的压缩包.zip", "r") as zipobj:
    print(zipobj.namelist())

output

['Book1.xlsx', 'supermarkt_sales.xlsx']

可以看到输出的就是上次我们打包的几个excel文件

  • 将压缩包当中的单个文件,解压出来

通过zipfile模块当中的extract()方法来实现

dst = "output"

with zipfile.ZipFile("我创建的压缩包.zip", "r") as zipobj:
    zipobj.extract("Book1.xlsx",dst)

上述代码的用意就是将压缩包当中的“Book1.xlsx”文件解压至“output”目录文件夹下

  • 将压缩包中的所有文件,都解压出来

通过zipfile模块当中的extractall()方法来实现,代码如下

dst = "output"

with zipfile.ZipFile("我创建的压缩包.zip", "r") as zipobj:
    zipobj.extractall(dst)
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 编程语言
    +关注

    关注

    9

    文章

    1878

    浏览量

    33122
  • 文件系统
    +关注

    关注

    0

    文章

    273

    浏览量

    19676
  • 代码
    +关注

    关注

    30

    文章

    4555

    浏览量

    66772
  • python
    +关注

    关注

    51

    文章

    4675

    浏览量

    83467
收藏 人收藏

    评论

    相关推荐

    Linux文件系统简介

    任何一个操作系统中,文件管理是其基本功能之一,而文件的管理是由文件系统来完成的。文件系统主要用于
    发表于 04-15 11:46 2078次阅读
    Linux<b class='flag-5'>文件系统</b>简介

    使用FPGA实现文件系统的问题

    由于一个项目中牵涉到了文件系统实现,C语言里用链表可以对文件系统进行实现,但FPGA里没有指针和地址的概念,想请教一下,如何对文件进行创建
    发表于 04-20 14:19

    Linux文件系统的类型和常用命令

    操作系统的主要功能之一就是文件的管理。文件管理是由文件系统
    发表于 12-30 06:44

    车载MP3中Flash文件系统的设计与应用

    基于Flash 存储器的特点,详细介绍适合于车载MP3 的Flash 文件系统(包括Flash存储管理系统和FAT 文件系统) 的具体设计。利用Flash 文件系统
    发表于 04-15 10:03 18次下载

    车载MP3中Flash文件系统的设计与应用

    基于Flash 存储器的特点,详细介绍适合于车载MP3 的Flash 文件系统(包括Flash存储管理系统和FAT 文件系统) 的具体设计。利用Flash 文件系统
    发表于 05-16 13:54 11次下载

    基于μC/OS-II的文件系统设计

    本文提出了基于μC/OS-II 的一个文件系统的设计与实现方法。通过分析文件系统中的 层次结构和功能模块,给出了文件系统的详
    发表于 06-17 10:48 10次下载

    基于C51的数据存储器文件系统设计及实现

    本文介绍了一种基于C51编程的文件系统设计方法和写文件的算法及过程。采用FAT1 6文件系统的设计思路,实现文件系统的打开、读写、删除等基
    发表于 12-04 16:02 26次下载

    文件系统管理操作

    为了方便用户对设备存储设备进行有效的管理,设备提供了文件系统功能实现文件和目录的访问管理:用户可以通过命令行对文件进行创建、移动、拷贝、
    发表于 08-30 15:55 0次下载

    JFFS2文件系统在天熠操作系统中的实现

    进行数据存储和管理的需要。然而,对于恶劣环境下的机载、车载等特定功能需求,采用NorFlash或者NandF-lash等介质存储数据,抗震动性能更好,可靠性更高。因此,实现基于Flash存储介质的文件系统具有重要意义。 JFFS
    发表于 01-31 14:12 0次下载

    嵌入式Linux常用文件系统

    Linux支持很多文件系统,在选择时应根据应用的功能选择文件系统 内核只认识VFS(虚拟文件系统),不同的文件系统
    发表于 05-04 17:19 2147次阅读
    嵌入式Linux常用<b class='flag-5'>文件系统</b>

    linux文件系统中的虚拟文件系统设计详解

    Linux 中允许众多不同的文件系统共存,如 ext2, ext3, vfat 等。通过使用同一套文件 I/O 系统 调用即可对 Linux 中的任意文件进行
    发表于 04-02 14:37 1584次阅读
    linux<b class='flag-5'>文件系统</b>中的虚拟<b class='flag-5'>文件系统</b>设计详解

    文件系统中的日志系统是如何实现

    因为文件系统会涉及对磁盘的多次写操作,如果在写的过程中系统崩溃了,就会使得磁盘上的文件系统处于不一致的错误状态。 日志就是设计来解决因为系统
    的头像 发表于 09-29 11:04 1909次阅读
    <b class='flag-5'>文件系统</b>中的日志<b class='flag-5'>系统</b>是如何<b class='flag-5'>实现</b>的

    xv6的文件系统是如何实现

    文件系统 。本文直接来看 xv6 的文件系统这部分是如何实现的。 文件系统布局 再来系统的看看 xv6
    的头像 发表于 10-12 18:00 2156次阅读
     xv6的<b class='flag-5'>文件系统</b>是如何<b class='flag-5'>实现</b>的

    嵌入式Linux系统移植-(Linux文件系统

    上的组织形式。·文件系统操作系统提供了必要的用于创建文件、删除文件、读文件和写文件相应的
    发表于 11-02 12:51 16次下载
    嵌入式Linux<b class='flag-5'>系统</b>移植-(Linux<b class='flag-5'>文件系统</b>)

    何用Python操作Excel文件

    今天小编来介绍一下如何用Python操作Excel文件,当中需要用到的模块叫做openpyxl,其中我们会涉及到一些基本常规的操作,例如有
    发表于 08-05 11:07 805次阅读