Hello,大家好,我是陈程~
近几年随着 Python 的热度一直上涨,人们慢慢应用这门编程语言来进行一些自动化操作,以节俭重复劳动带来的效率低下,那么必定会波及到对 文件系统的操作 ,包含文件的 增、删、改、查 等等,明天小编就来介绍一下如何用 Python 来实现这些性能
01 输入以后的门路
咱们能够通过 Python 当中的 OS 库来获取以后文件所在的地位
import os
os.getcwd()
02 门路的拼接
咱们通过os.path.join() 办法来实现
os.path.join('output', 'Book1.xlsx')
output
output\Book1.xlsx
03 确认某文件夹或者是文件是否存在
咱们先来看如何来确认文件夹是否存在,同样也是通过 OS 模块
os.path.exists('directory_name')
同样的情理,当咱们查看一下某个文件是否存在的时候,能够这么做
os.path.exists('path/file_name')
04 建设文件夹目录
而后咱们来看一下如何新建一个文件夹
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'))
05 列举出当前目录下所蕴含的所有文件
代码如下
os.listdir('文件夹名称')
然而有时候咱们可能想例如搜查一下当前目录下的所有文件中以“py”结尾的文件,咱们能够通过通配符来实现,代码如下
list(glob(os.path.join('.', '*.py')))
下面提到的 glob 模块可能疾速查找咱们想要的目录和文件,它反对 、*、?、[] 这四个通配符
06 挪动文件
要是咱们想在不同的目录文件夹之下挪动文件,该怎么操作呢?这里咱们介绍 Python 当中的 shutil 模块,假如咱们想要将当前目录下的几个 csv 文件挪动到“test_dir”目录文件夹之下,代码如下
import shutil
for file in list(glob(os.path.join('.', '*.csv'))):
shutil.move(file, 'test_dir')
07 复制文件
当咱们想要复制文件的时候,也能够应用 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'))
08 删除文件
咱们来看一下删除文件该如何实现?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"))
09 创立和解压 压缩包
谈及到操作压缩包相干的内容,就不得不说 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)
以上,就是我明天分享的内容,心愿对你有所帮忙!
喜爱这篇内容的小伙伴们,就点个赞和关注!你们的必定是我后退的一个能源!