[干货分享]Python文件操作技巧总结
原创 我的果果超可爱 脉冲功率实验室 1周前收录于话题#数学建模3#数据分析6#科技8#Python5#编程6引言小伙伴们,今天给大家讲解一下python程序下的文件操作完整技巧梳理,都是笔者总结的干货。通过本文阅读,不仅可以带来生产力提升,也可以开发小脚本为生活带来乐趣。
首先不知道大家对python有没有了解,不太会用的小伙伴可以在下面回复,我将出一期新的python教程进行前置学习,也会针对大家的情况提供初学资料。那么现在呢,假定你已经入门了Python,但是对文件操作还不熟练,技巧也不清楚,那么就来一起进行本文之旅吧。python文件操作总体来说,还是比较简单的,但是各个模块之间比较混乱,官方自带的库提供的功能各有不一,带来很多不便之处。本文通过笔者数年python经验总结,帮你们做一次完整的梳理,提供各种操作的技巧示范。各官方库的简介我们利用python文件操作,一般是利用官方提供给我们的库,如os,pathlib,shutil等,一般很少使用第三方的库,因为这些已经足够简单。那么首先让大家看看官方文档的描述吧。官方库文档介绍os依赖操作系统的功能的快捷函数。pathlib用适用于不同操作系统的语法,来表示文件系统路径shutil在文件和文件集合上提供了许多高级操作接下来开始正式的技巧环节。技巧一:文件信息查看查看文件信息,使用os或者pathlib的stat函数即可。熟悉linux的小伙伴,会发现linux命令行也是用的stat。import osprint(os.stat('test1.txt'))#输出:os.stat_result(st_mode=33206, st_ino=1688849860300737, st_dev=518802029, st_nlink=1, st_uid=0, st_gid=0, st_size=0, st_atime=1614757783, st_mtime=1614757783, st_ctime=1614757783)from pathlib import Pathprint(Path('test1.txt').stat())#输出:os.stat_result(st_mode=33206, st_ino=1688849860300737, st_dev=518802029, st_nlink=1, st_uid=0, st_gid=0, st_size=0, st_atime=1614757783, st_mtime=1614757783, st_ctime=1614757783)可以看到,输出一个类,常用的成员解释如下。官方库文档介绍st_size用适用于不同操作系统的语法,来表示文件系统路径st_atime最后访问时间st_mtime最后修改时间st_ctimelinux为“最后修改时间”, windows为“创建时间”这里面的时间是距离1970年1月1日(UTC)以来有多少秒,我们可以这样转为年月日。至于详细的时间操作技巧,可以见后续的文章,别忘关注哦。from datetime import datetimeprint(datetime.fromtimestamp(1614757783))# 输出:2021-03-03 15:49:43技巧二:文件/文件夹的创建·文件的创建可以简单的用 with open即可,这里不再赘述。·文件夹的创建,涉及到是否覆盖或跳过已存在的文件夹的问题。所以建议使用 pathlib 库里面的 mkdir 函数。Path.mkdir() 函数有个参数 exist_ok,为True 时允许已存在,运行则跳过。为False时不允许存在,运行则报错。print(Path('test').mkdir()) # exist_ok 默认Falseprint(Path('test').mkdir(exist_ok=True)) # 存在则跳过print(Path('test').mkdir(exist_ok=False)) # 存在则报错技巧三:文件/文件夹的删除文件或文件夹的删除,都可以用 shutil库的rmtree方法。其中有个 ignore_errors参数,可以指定是否忽略错误。注意谨慎删除哦。shutil.rmtree('test1.txt') # exist_ok默认Falseshutil.rmtree('test1.txt', ignore_errors=True) # 忽略错误shutil.rmtree('test1.txt', ignore_errors=False) # 不忽略错误技巧三:文件/文件夹修改文件内容修改,简单使用 with open 即可,不再赘述。文件或文件夹的名称修改,可以用shutil的move函数。import shutilshutil.move('test1.txt', 'test2.txt')技巧三:文件/文件夹复制、剪切文件夹复制、剪切,可以分别用shutil的copy函数和move函数。import shutilshutil.copy('test1.txt', 'test2.txt')shutil.move('test1.txt', 'test3.txt')技巧三:文件夹遍历文件夹遍历,可以用pathlib的Path.glob函数。该函数输出一个Generator生成器,可以直接for循环,也可以用list()转为列表。递归遍历可以在搜索项之前加上**/ 前缀。from pathlib import Pathprint(list(Path('.').glob('*.txt')))print(list(Path('.').glob('**/*.txt')) # 递归遍历子文件夹技巧五:文件/文件夹查找参见技巧四,先文件夹遍历,再判断即可。好了,相关的文件技巧已经介绍完了,笔者平时做python开发,差不多已经够用了。当然也偶尔开发小脚本,批量管理文件,增加生活乐趣,有兴趣的可以留言,后续跟进。大家有什么疑问,或者还需要了解什么功能,欢迎下文回复哦,笔者会第一时间答复。当然我们会准备给看到这里的小伙伴们小惊喜哟~想要获取更多资料的小伙伴们,请在关注后,后台回复:征服PYTHON-语言基础与典型应用会得到一本入门宝典哟~广告Python基础编程入门作者:谭冠兰,陆伟峰,·京东喜欢此内容的人还喜欢[干货分享]Python地理空间分析指南[干货分享]Python地理空间分析指南...脉冲功率实验室不喜欢不看的原因确定内容质量低不看此公众号Python入门到精通(13):计算从1加到100Python入门到精通(13):计算从1加到100...使用Python玩转数学不喜欢不看的原因确定内容质量低不看此公众号python入门(二)python入门(二)...与C同行不喜欢不看的原因确定内容质量低不看此公众号