9个必知的 Python 操作文件/文件夹方法
作者 | 欣一
来源 | Python爱好者集中营
近几年随着Python
的热度不断上涨,人们渐渐使用这门编程语言来进行一些自动化操作,以节省重复劳动带来的效率低下,那么必定会涉及到对文件系统的操作,包括文件的增、删、改、查等等,今天小编就来介绍一下如何用Python
来实现这些功能
输出当前的路径
我们可以通过Python
当中的OS
库来获取当前文件所在的位置
import os
os.getcwd()
路径的拼接
我们通过os.path.join()
方法来实现
os.path.join('output', 'Book1.xlsx')
output
output\Book1.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 shutilfor 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)
往
期
回
顾
技术
6种常用的绘制地图的方法,码住!
资讯
DeepMind 打造AI游戏系统
技术
20个经典函数说Pandas的数据使用
资讯
机器人Ameca苏醒瞬间逼真到令人...
分享
点收藏
点点赞
点在看
9个必知的 Python 操作文件/文件夹方法相关推荐
- 9个必知的Python操作文件/文件夹方法
近几年随着Python的热度不断上涨,人们渐渐使用这门编程语言来进行一些自动化操作,以节省重复劳动带来的效率低下,那么必定会涉及到对文件系统的操作,包括文件的增.删.改.查等等,今天小编就来介绍一下如 ...
- 【Python】9个必知的Python操作文件/文件夹方法
近几年随着Python的热度不断上涨,人们渐渐使用这门编程语言来进行一些自动化操作,以节省重复劳动带来的效率低下,那么必定会涉及到对文件系统的操作,包括文件的增.删.改.查等等,今天小编就来介绍一下如 ...
- python开发环境和运行环境的区别_Python 初学者必知:Python 运行与开发环境
http://codingdao.com/wp/post/py-must-know-run-dev-env/ Python 初学者必知:Python 运行与开发环境 2011年2月11日 Breake ...
- Python操作Zip文件
Python操作Zip文件 需要使用到zipfile模块 读取Zip文件 随便一个zip文件,我这里用了bb.zip,就是一个文件夹bb,里面有个文件aa.txt.
- python处理excel表格实例-使用Python操作excel文件的实例代码
使用的类库 pip install openpyxl 操作实现 •工作簿操作 # coding: utf-8 from openpyxl import Workbook # 创建一个excel工作簿 ...
- python入门教程2word-入门干货:Python操作Word文件经验分享
原标题:入门干货:Python操作Word文件经验分享 导读:Microsoft Word在当前使用中是占有巨大优势的文字处理器,这使得Word专用的档案格式Word 文件(.docx)成为事实上最通 ...
- 手机使用python操作图片文件
手机使用python操作图片文件 起因 前几天去国图拍了一本书,一本心理学方面的书,也许你问我为什么不去买一本,或者去网上找pdf. 其实吧,关于心理学方面的书可以说在市面上一抓就是一堆,至于拍这本书 ...
- 详解Python操作Excel文件
前言 本篇文章主要总结了一下利用python操作Excel文件的第三方库和方法. 常见库简介 1.xlrd xlrd是一个从Excel文件读取数据和格式化信息的库,支持.xls以及.xlsx文件. 地 ...
- 初学者必知的Python中优雅的用法
初学者必知的Python中优雅的用法:http://python.jobbole.com/81393/
最新文章
- 一打开就致命错误_CAD|致命错误|解决方法
- Java的synchronized关键字:同步机制总结
- get与post请求问题
- class字节码文件中的常量池结构详解
- OpenGL instancing实例化的实例
- mysql启动关闭步骤_MYSQL的连接管理与启动关闭流程
- 查看oracle会话和进程_带有Oracle Digital Assistant和Fn Project的会话式UI。 第三部分,迁移到云...
- tyvj 1391 走廊泼水节【最小生成树】By cellur925
- load out mysql,快速的mysql导入导出数据(load data和outfile)
- 菜鸟的学习之路(7) — 包(package)、Object类和String类
- c语言蓝桥删除多余的括号,蓝桥杯 括号问题
- .NetCore 下开发独立的(RPL)含有界面的组件包 (一)准备工作
- 图片版坦克大战其他相关的 类(三)
- 软件工程需求分析方法
- 车辆调度系统php,GitHub - Teamo1001/VehicleSYS: 一个基于Laravel框架的车辆调度、定位、管理系统,服务端...
- jquery 封装幻灯插件_21个jQuery幻灯片插件
- 那些让我印象深刻的bug--02
- 一个简单的wifi热点启动流程追踪
- 杂篇-01-Unity中创建Mesh时遇到的问题
- sql中的窗口函数:lead,lag
热门文章
- 生产环境主从数据同步不了?
- JNDI概述(转载)
- 域名年龄-SEO搜索引擎优化
- WCF服务重构实录(上)
- LINQ篇:ASP.NET using LINQ(Part One) Scott大师的产物
- [ASP.NET]状态管理[摘自C#入门经典]
- 通过hibernate 查询出来的数据默认为持久状态,也就是说:你在后头作出的任何操作都会被hibernate自动同步更新到数据库
- nested exception is org.apache.ibatis.type.TypeException: Could not set parameters for mapping
- Annotation
- 阶段1 语言基础+高级_1-3-Java语言高级_02-继承与多态_第5节 final关键字_5_final关键字用于修饰成员变量...