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苏醒瞬间逼真到令人...
分享
点收藏
点点赞
点在看
相关文章:

Get/POST方法提交的长度限制
1. Get方法长度限制 Http Get方法提交的数据大小长度并没有限制,HTTP协议规范没有对URL长度进行限制。这个限制是特定的浏览器及服务器对它的限制。 如:IE对URL长度的限制是2083字节(2K35)。 下面就是对各种浏览器和服务器的…

Bitmap上下合成图片
合成两张图片,上下叠加的效果: /*** 把两个位图覆盖合成为一个位图,以底层位图的长宽为基准** param backBitmap 在底部的位图* param frontBitmap 盖在上面的位图* return*/public static Bitmap mergeBitmap(Bitmap backBitmap, Bitmap fr…

PHP 符号大全
注解符号: // 单行注解 /* */ 多行注解引号的使用’ ’ 单引号,没有任何意义,不经任何处理直接拿过来;" "双引号,php动态处理然后输出,一般用于变量.变量形态: 一种是True 即 真的;另一种是False 即假的常见变量形态: string 字串(数字\汉…

添加Net4CollectionTypeFactory的原因
.NET4.0已经实现了该功能 http://jahav.com/blog/nhibernate-using-net-4-iset/ NHibernate using .NET 4 ISet 0 CommentsNHibernate 4.0 (released in 2014-08-17) has brought us support for .NET 4 ISet<> collections, thus freeing us from the tyranny of the Ie…

LTSM 实现多元素时序数据植物健康预测
作者 | 李秋键 出品 | AI科技大本营(ID:rgznai100) 引言: 近些年来,“预测”一词在各个领域被频繁提及,所谓预测,实际上就是根据历史规律,推测未来结果。在科学技术发展有限的过去࿰…

如何扩大以太坊的规模:分片简介(How to Scale Ethereum: Sharding Explained)
2019独角兽企业重金招聘Python工程师标准>>> 分片是提高区块链效率的一个主要流派。下面简单通俗的解释一下分片算法。 以太猫(Cryptokitties)堵塞了以太坊网络好几天,以太坊--世界上最大的,公开的区块链目前是无法扩容的,也众所周…

Xdebug的安装-(无错可执行版)
xdebug是一个开源的php调试器,以php模块的形式加载并被使用。可以用来跟踪,调试和分析PHP程序的运行状况. 这里以PHP5.2.13为例, 1.下载php_xdebug-2.1.0-5.2.dll文件, http://www.xdebug.org/download.php 选择:PHP 5.2 VC6 TS (32 bit) 选择…

云游戏、VR、AI,云计算给元宇宙提供了哪些想象力?
2021 最火的新概念,莫过于元宇宙。2021 年 10 月 29 日,Facebook 宣布改名 Meta;2021 年 11 月 1 日,“元宇宙第一股” Roblox 经过短暂调整,宣布重新上线。接下来关于元宇宙的线下 / 线上讨论如火如荼,…

sys.check_constraints
每个用作 CHECK 约束(sys.objects.type C)的对象都在表中占一行。 SELECT name FROM sys.check_constraints-- equal to SELECT o.name FROM sys.sysobjects oJOIN sys.sysconstraints s ON o.parent_obj s.id WHERE o.xtype C GROUP BY o.…

什么是Bootstrap Aggregating
简介 Bootstrap Aggregating也叫作bagging,是一种机器学习领域用来做模型合并的一种算法。这种算法可以提高统计分类器和回归器的稳定性和准确度。同时也可以帮助模型避免过拟合。历史Bootstrap Aggregating最早在1994年由Leo Breiman提出,当时用来通过随…

柯南君:看大数据时代下的IT架构(5)消息队列之RabbitMQ--案例(Work Queues起航)...
二、Work Queues(using the Java Client) 走起 在第上一个教程中我们写程序从一个命名队列发送和接收消息。在这一次我们将创建一个工作队列,将用于分发耗时的任务在多个工作者(worker)之间。 背后的主要思想工作队列(又名:任务队列)是为了避…

图像分析用 OpenCV 与 Skimage,哪一个更好?
作者 | 小白来源 | 小白学视觉这两种算法在它们可以检测到的和不能检测到的方面都有其起伏。OpenCV 是用 C 在后端进行编程的,并作为一个机器学习包,来分析 Python 中的图像模式。Skimage 也称为 Scikit-Image ,是一个机器学习软件包…

NetBeans配置Xdebug
这篇文章已经更新,看 Windows环境配置xdebug调试PHP Windows环境 或者 NetBeans配置Xdebug 远程调试PHP Linux环境nebeans配置xdebug可以方便我们逐步的查看程序的运行情况对我们调试程序是非常有利的下面我就来介绍下配置的过程。先要安装xdebug,可以参…

[译] Don’t call me, I’ll call you:使用 Redux-Saga 管理 React 应用中的异步 action (上)...
原文地址:Don’t call me, I’ll call you: Side effects management with Redux-Saga (Part 1)原文作者:David Dvora译文出自:掘金翻译计划本文永久链接:github.com/xitu/gold-m…译者:jonjia校对者:smile…

CentOS下安装NetBeans集成开发环境
下载NetBeans以netbeans-7.0beta2-ml-javaee-linux.sh为例#sh netbeans-7.0beta2-ml-javaee-linux.sh之后进入安装界面(接下来和windows下几乎一样不在举例) 前提是要安装了Java 主要不要在本地远程用SecureCRT输入命令啊,要在Linux下用终端输…
我的Android进阶之旅------Android嵌入图像InsetDrawable的用法
面试题:为一个充满整个屏幕的LinearLayout布局指定背景图,是否可以让背景图不充满屏幕?请用代码描述实现过程。 解决此题,可以使用嵌入(Inset)图像资源来指定图像,然后像使用普通图像资源一样使用嵌入图像资源。 语法如…

沉痛悼念游戏开发大神毛星云
惟愿所有的“爆料”都是造谣,惟愿我们能够一起去创造并让大家都能玩到蕴藏着中国上下五千年本土文化的优质游戏大作,惟愿我们能等到你的好消息......让人难过的是,据银柿财经报道,针对近日“网传腾讯天美员工离世”的消息…

April Fools Contest 2018
这个比赛不正经,但是我可以一本正经的写代码啊 A. Quirky Quantifierstime limit per test2 secondsmemory limit per test64 megabytesinputstandard inputoutputstandard outputInputThe input contains a single integer a (10 ≤ a ≤ 999). OutputOutput 0…

如何查找僵尸进程并Kill之,杀不掉的要查看父进程并杀之
用ps和grep命令寻找僵尸进程#ps -A -ostat,ppid,pid,cmd | grep -e ^[Zz]命令注解:-A 参数列出所有进程-o 自定义输出字段 我们设定显示字段为 stat(状态), ppid(进程父id), pid(进程id),cmd(命…

PHP计划任务:如何使用Linux的Crontab执行PHP脚本(转)
我们的PHP程序有时候需要定时执行,我们可以使用ignore_user_abort函数或是在页面放置js让用户帮我们实现。但这两种方法都不太可靠,不稳定。我们可以借助Linux的Crontab工具来稳定可靠地触发PHP执行任务。下面介绍Crontab的两种方法。一、在Crontab中使用…

OpenAI 开放 GPT-3 微调功能,让开发者笑开了花
出品 | AI科技大本营(ID:rgznai100) 近日,OpenAI宣布,允许用户创建自定义版的 GPT-3。 OpenAI 表示,开发人员可以使用微调来创建针对其应用程序和服务中的特定内容量身定制的 GPT-3 模型,从而在任务和工作…

PHP----------php封装的一些简单实用的方法汇总
1、xml转换成array,格式不对的xml则返回false function xml_parser($str){ $xml_parser xml_parser_create(); if(!xml_parse($xml_parser,$str,true)){ xml_parser_free($xml_parser); return false; } else { …

PHP函数--var_dump
var_dump(PHP 3 > 3.0.5, PHP 4, PHP 5)var_dump -- 打印变量的相关信息描述void var_dump ( mixed expression [, mixed expression [, ...]] )此函数显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构…

Mozilla公布WebVR API标准草案
随着信息技术的迅速发展,虚拟现实(Virtual Reality,VR)技术在近些年不断完善,其应用范围也变得十分广泛。为了搭建逼真的虚拟场景,VR技术一般都需要用到大量精美的图像和复杂的动作。因此,大部分…

不到 100 行 Python 代码教你做出精美炫酷的可视化大屏
作者 |俊欣来源 |关于数据分析与可视化“碳达峰、碳中和”是2021年政府在不断强调与非常重视的事儿,那什么是“碳达峰”、什么又是“碳中和”呢?这里小编来为大家科普一下,所谓的“碳达峰”指的是在某一时间点,二氧化碳的排放不再…
JavaScript实现冒泡排序
说明 对数组进行 冒泡排序 算是比较简单的,冒泡排序也是容易理解的一种排序算法了,在面试的时候,很可能就会问到。 实现原理 数组中有 n 个数,比较每相邻两个数,如果前者大于后者,就把两个数交换位置&#…

PHP--isset()和unset()函数的用法
isset(PHP 3, PHP 4, PHP 5 )isset -- 检测变量是否设置描述bool isset ( mixed var [, mixed var [, ...]])如果 var 存在则返回 TRUE,否则返回 FALSE。 如果已经使用 unset() 释放了一个变量之后,它将不再是 isset()。若使用 isset() 测试一个被设置成…

有关任意多条曲线的拟合度算法
为什么80%的码农都做不了架构师?>>> 在股市中,经常会遇到趋势的预判。所谓趋势,即相对而言的规律化的模式识别形态。形象来讲,就是个股的一段时间内的曲线分布状况。 那么,问题来了。 我们虽然可以在少量的…

从深度学习到深度森林方法(Python)
作者 |泳鱼来源 |算法进阶一、深度森林的介绍 目前深度神经网络(DNN)做得好的几乎都是涉及图像视频(CV)、自然语言处理(NLP)等的任务,都是典型的数值建模任务(在表格数据tabular dat…

LHC大神问的矩阵转置问题
数学中线性代数中提到的矩阵转置,其实在我们的业务场景中也有需要的地方,比如LHC大神问到的这个问题 那么如何进行行列转换呢? 代码如下: <?php$arrayarray(部门1>array(费用1>100,费用2>200,费用3>300),部门2>…