引言

小伙伴们,今天给大家讲解一下python程序下的文件操作完整技巧梳理,都是笔者总结的干货。通过本文阅读,不仅可以带来生产力提升,也可以开发小脚本为生活带来乐趣。

        首先不知道大家对python有没有了解,不太会用的小伙伴可以在下面回复,我将出一期新的python教程进行前置学习,也会针对大家的情况提供初学资料。那么现在呢,假定你已经入门了Python,但是对文件操作还不熟练,技巧也不清楚,那么就来一起进行本文之旅吧。

python文件操作总体来说,还是比较简单的,但是各个模块之间比较混乱,官方自带的库提供的功能各有不一,带来很多不便之处。本文通过笔者数年python经验总结,帮你们做一次完整的梳理,提供各种操作的技巧示范。

各官方库的简介

我们利用python文件操作,一般是利用官方提供给我们的库,如os,pathlib,shutil等,一般很少使用第三方的库,因为这些已经足够简单。那么首先让大家看看官方文档的描述吧。官方库文档介绍os依赖操作系统的功能的快捷函数。

pathlib用适用于不同操作系统的语法,来表示文件系统路径

shutil在文件和文件集合上提供了许多高级操作

接下来开始正式的技巧环节。

技巧一:文件信息查看

查看文件信息,使用os或者pathlib的stat函数即可。熟悉linux的小伙伴,会发现linux命令行也是用的stat。import os

print(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 Path

print(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 datetime

print(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 默认False

print(Path('test').mkdir(exist_ok=True)) # 存在则跳过

print(Path('test').mkdir(exist_ok=False)) # 存在则报错

技巧三:文件/文件夹的删除

文件或文件夹的删除,都可以用 shutil库的rmtree方法。其中有个 ignore_errors参数,可以指定是否忽略错误。注意谨慎删除哦。shutil.rmtree('test1.txt') # exist_ok默认False

shutil.rmtree('test1.txt', ignore_errors=True) # 忽略错误

shutil.rmtree('test1.txt', ignore_errors=False) # 不忽略错误

技巧三:文件/文件夹修改

文件内容修改,简单使用 with open 即可,不再赘述。

文件或文件夹的名称修改,可以用shutil的move函数。import shutil

shutil.move('test1.txt', 'test2.txt')

技巧三:文件/文件夹复制、剪切

文件夹复制、剪切,可以分别用shutil的copy函数和move函数。import shutil

shutil.copy('test1.txt', 'test2.txt')

shutil.move('test1.txt', 'test3.txt')

技巧三:文件夹遍历

文件夹遍历,可以用pathlib的Path.glob函数。该函数输出一个Generator生成器,可以直接for循环,也可以用list()转为列表。

递归遍历可以在搜索项之前加上**/ 前缀。from pathlib import Path

print(list(Path('.').glob('*.txt')))

print(list(Path('.').glob('**/*.txt')) # 递归遍历子文件夹

技巧五:文件/文件夹查找

参见技巧四,先文件夹遍历,再判断即可。

好了,相关的文件技巧已经介绍完了,笔者平时做python开发,差不多已经够用了。当然也偶尔开发小脚本,批量管理文件,增加生活乐趣,有兴趣的可以留言,后续跟进。

不喜欢

python文件操作实验总结,[干货分享]Python文件操作技巧总结相关推荐

  1. python入门教程2word-入门干货:Python操作Word文件经验分享

    原标题:入门干货:Python操作Word文件经验分享 导读:Microsoft Word在当前使用中是占有巨大优势的文字处理器,这使得Word专用的档案格式Word 文件(.docx)成为事实上最通 ...

  2. python缺少标准库_干货分享:Python如何自动导入缺失的库

    很多同学在写Python项目时会遇到导入模块失败的情况:ImportError: No module named 'xxx'或者ModuleNotFoundError: No module named ...

  3. python定期自动运行_干货分享 | 适合 Python 入门的 8 款强大工具,不会就你还不知道吧!...

    点击上方"人工智能Corner","星标或置顶公众号" 干货分享,第一时间送达 Python是一种开源的编程语言,可用于Web编程.数据科学.人工智能以及许多科 ...

  4. python创建空文本文件_Python干货:「文件处理整合」 创建、打开、写入和删除...

    什么是Python文件处理? Python文件处理就是如何在python中创建.打开.读取.写入和删除文件的示例.从文件(EXCELSheet.doc文件.文本文件.cv等)或Add中读取数据.是一个 ...

  5. python 财务报表审计_【干货】Python自动化审计及实现

    原标题:[干货]Python自动化审计及实现 本文由马哥教育Python自动化实战班导师wayne推荐,作者为SSS团队,转载自互联网,内容略经小编改编和加工,观点跟作者无关,最后感谢作者的辛苦贡献与 ...

  6. 利用python查询电脑配置_干货|利用Python将地址转换为经纬度坐标

    本文主要讲述利用Python将文本格式的地址转换为数字格式的经纬度坐标数据,主要步骤有: 注册高德地图API账号,申请Web服务的Key 了解并测试地理编码API服务 利用Python实现地址转坐标 ...

  7. python接口自动化测试书籍_干货丨Python接口测试自动化实战及代码示例:含get、post等方法...

    引言:年初参与到一个后台系统开发的项目中,里面涉及了很多接口,我做为项目组测试人员,需要对这些接口进行测试,一开始使用 postman 工具测试,很是方便.但随着接口数量的增加,不光要执行手动点击测试 ...

  8. python语言程序设计实验题_《Python语言程序设计》测验题目

    Python语言程序设计测验题目 在MOOC网学习Python语言程序设计 课程,课程会有考试,这里把每次考试的经历记录下来,作为学习Python笔记的一部分,后边的考试会持续更新-- Python语 ...

  9. 实验一 熟悉常用的Linux操作,实验2-熟悉常用的HDFS操作

    <实验2-熟悉常用的HDFS操作>由会员分享,可在线阅读,更多相关<实验2-熟悉常用的HDFS操作(5页珍藏版)>请在人人文库网上搜索. 1.实验2熟悉常用的HDFS操作1 实 ...

最新文章

  1. 计算机在我国开始被应用于,(),计算机在我国也开始被应用于会计工作,并由此引出了“会计电算化”这一具有强烈中国特色的专 - 试题答案网问答...
  2. AlphaZero登上《科学》封面:一个算法“通杀”三大棋,完整论文首次发布
  3. java 控件内布局_Java开发桌面程序学习(二)————fxml布局与控件学习
  4. 从零开始入门 K8s | K8s 安全之访问控制
  5. 华测数据导出方法_输电线路塔基测量成图方法研究与应用
  6. 【LintCode题集】Q6、Q64
  7. java 聚合模式_java 聚合和组合的区别?
  8. Mybatis 实现MySQL的:无数据插入,有数据更新
  9. Java多线程编程那些事:volatile解惑
  10. angular6之Http服务
  11. gps信号用什么软件测试,gps信号检测软件
  12. RTP载荷H264视频流
  13. 奥西450的服务器系统,奥西TDS450
  14. oracle12c 环境需求,Oracle12C之环境准备工作
  15. (附源码)springboot校园购物网站APP 毕业设计041037
  16. am5728通过DM框架配置GPIO管脚
  17. ROS2教程(入门级):创建ROS2工作空间
  18. 数值法求解最优控制问题(四)——伪谱法
  19. 红米k30支持html,红米k30支持多大的快充
  20. 简易图书管理系统(主要是jsp+servlet的练习),基于jsp+servlet的图书管理系统

热门文章

  1. surround360
  2. OnLongClickListener长按事件设置墙纸
  3. =======================================以前的======================================
  4. svn搭建本地服务端
  5. vSphere5.5安装教程
  6. Mybatis各种模糊查询及#和$区别
  7. 步步为营:Asp.Net序列化Json格式的两种方法
  8. 重学数据结构007——二叉查找树
  9. 数据科学与大数据技术的案例_主数据科学案例研究,招聘经理的观点
  10. 机器学习实践三---神经网络学习