前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >9个必知的Python操作文件/文件夹方法,你知道吗

9个必知的Python操作文件/文件夹方法,你知道吗

原创
作者头像
陈晨135
发布2021-12-22 09:30:43
5280
发布2021-12-22 09:30:43
举报
文章被收录于专栏:Python小课堂Python小课堂

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

01 输出当前的路径

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

代码语言:javascript
复制
import os
os.getcwd()

02 路径的拼接

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

代码语言:javascript
复制
os.path.join('output', 'Book1.xlsx')

output

代码语言:javascript
复制
output\Book1.xlsx

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

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

代码语言:javascript
复制
os.path.exists('directory_name')

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

代码语言:javascript
复制
os.path.exists('path/file_name')

04 建立文件夹目录

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

代码语言:javascript
复制
os.mkdir("文件夹名称")

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

代码语言:javascript
复制
if not os.path.exists('文件夹名称'):
    os.mkdir('文件夹名称')

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

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

代码语言:javascript
复制
os.makedirs(os.path.join('test_dir', 'level_1', 'level_2', 'level_3'))

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

代码如下

代码语言:javascript
复制
os.listdir('文件夹名称')

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

代码语言:javascript
复制
list(glob(os.path.join('.', '*.py')))

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

06 移动文件

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

代码语言:javascript
复制
import shutil

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

07 复制文件

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

代码语言:javascript
复制
shutil.copy(os.path.join('test_dir', 'data.csv'), 'output')

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

代码语言:javascript
复制
shutil.copy(os.path.join('test_dir', 'data.csv'),
            os.path.join('output', 'data_2.csv'))

08 删除文件

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

代码语言:javascript
复制
os.remove(os.path.join('output', 'data_2.csv'))

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

代码语言:javascript
复制
os.rmdir(os.path.join('test_dir', 'level_1', 'level_2', 'level_3'))

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

代码语言:javascript
复制
shutil.rmtree("test_delete")

或者是

代码语言:javascript
复制
shutil.rmtree(os.path.join("test_delete", "test_1_delete"))

09 创建和解压 压缩包

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

  • 创建一个压缩包

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

代码语言:javascript
复制
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()方法来实现

代码语言:javascript
复制
with zipfile.ZipFile("我创建的压缩包.zip", "r") as zipobj:
    print(zipobj.namelist())

output

代码语言:javascript
复制
['Book1.xlsx', 'supermarkt_sales.xlsx']

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

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

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

代码语言:javascript
复制
dst = "output"

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

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

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

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

代码语言:javascript
复制
dst = "output"

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

以上,就是我今天分享的内容,希望对你有所帮助!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 01 输出当前的路径
  • 02 路径的拼接
  • 03 确认某文件夹或者是文件是否存在
  • 04 建立文件夹目录
  • 05 罗列出当前目录下所包含的所有文件
  • 06 移动文件
  • 07 复制文件
  • 08 删除文件
  • 09 创建和解压 压缩包
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档