Python 基础合集12:os库文件操作

2023-10-31

一、前言

本小节梳理了os常用的一些方法,并介绍一个小案例。

环境说明:Python 3.6、windows11 64位

二、os常用方法

注意:使用方法前需要先调用os库,即import os

os.getcwd()      # 获取当前目录
os.chdir(path)   # 将path设置为当前工作目录,相当于终端的切换路径
os.listdir(path) # path是一个目录,返回目录下的所有文件和文件夹,可以采用相对路径,如path='.'
os.mkdir(path)   # 创建一个名为 path 的目录
os.rmdir(path)   # 删除目录path。如果目录不存在或不为空,则会分别抛出 FileNotFoundError 或 OSError 异常。要删除整个目录树,可以使用 shutil.rmtree()
os.remove(path)  # 删除文件path,如果path是目录,则会引发 IsADirectoryError。
os.rename(old,new) # 重命名文件或目录,新的名字存在会报错
os.replace(old,new)# 重命名文件或目录,如果new是非空目录,将抛出 OSError 异常。如果new已存在且为文件,则进行静默替换
os.stat(path)    # 获取文件或文件描述符的状态
os.walk(top)     # 生成目录树中的文件名,方式是按上->下或下->上顺序浏览目录树。对于以 top 为根的目录树中的每个目录(包括 top 本身),它都会生成一个三个元素的元组:(dirpath, dirnames, filenames)。
os.environ       # 获取系统环境变量

os.path.abspath(path) # 返回path规范化的绝对路径
os.path.basename(path)# 返回path的文件名。
os.path.dirname(path) # 返回文件/目录的目录
os.path.exists(path)  # 判断文件/目录是否存在,存在返回 True。
os.path.getatime(path)# 获取文件/目录的最后访问时间。
os.path.getmtime(path)# 获取文件/目录的最后修改时间。
os.path.getsize(path) # 获取文件/目录的大小,以字节为单位。
os.path.isabs(path)   # 判断文件/目录是不是绝对路径,是则返回True
os.path.isfile(path)  # 判断path是不是文件,是则返回True。
os.path.isdir(path)   # 判断path是不是现有的目录,是则返回True。
os.path.join(path,*paths) # 拼接多个路径,依次拼接
os.path.split(path)   # 将路径 path 拆分为一对,即 (head, tail),其中,tail 是路径的最后一部分,可以是文件或目录,而 head 里是除最后部分外的所有内容。tail 部分不会包含斜杠,head 末尾的斜杠会被去掉,除非它是盘符。
os.path.splitext(path)# 将路径拆分为文件拓展名和剩下的部分,扩展名最多只包含一个句点。

2.1 拆分和拼接路径

拆分路径,将最后一部分拆分出来,可以是带后缀的文件名或者目录。

# 关于os.path.split()的测试
>>> os.path.split('D:\test1\\test2\\testfile.txt')
('D:\test1\\test2', 'testfile.txt')
>>> os.path.split('D:\test1\\test2\\')
('D:\test1\\test2', '')
>>> os.path.split('D:\test1\\test2')
('D:\test1', 'test2')
>>> os.path.split('D:\test1')
('D:', '\test1')

拼接路径,将一个或多个路径拼接在一起,一般是一个目录+一个文件的拼接。

# 关于os.path.join()的测试
>>> os.path.join('D:\\test1','test2\\test3','testfile.txt') 
'D:\\test1\\test2\\test3\\testfile.txt'
>>> os.path.join('D:\\test1','test2\\test3\\','testfile.txt')   # test2\\test3\\末尾可不加\\
'D:\\test1\\test2\\test3\\testfile.txt'
>>> os.path.join('D:\\test1','\\test2\\test3','testfile.txt')   # \\test2\\test3开头加\\拼接到上一个参数的根目录
'D:\\test2\\test3\\testfile.txt'
>>> os.path.join('D:\\test1','\\test2\\test3','\\testfile.txt') # 前面两个拼接完,拼上第3个和拼第2个时同理,拼接到上一个参数的根目录
'D:\\testfile.txt'
>>> os.path.join('D:','test2\\test3','testfile.txt') 
'D:test2\\test3\\testfile.txt'
>>> os.path.join('D:\\','test2\\test3\\','testfile.txt')        # 第1个参数是盘符需要加\\
'D:\\test2\\test3\\testfile.txt'

2.2 判断文件后缀

# 匹配文件后缀
file_name = 'W020220823719312969888.jpg'
if 'jpg' in file_name:
    print('ok')
if file_name.endswith('.jpg'):
    print('ok')
if os.path.splitext(file_name)[1] == '.jpg':
    print('ok')

如果要当前目录下某一类文件,也可以通过glob.glob()方法实现。如获取当前目录下的.jpg文件:

import glob
print(glob.glob('*.jpg'))

如果要获取的目录不是当前目录下的呢?那就使用os.chdir(path)将目标目录设置为当前目录。

import os,glob
path = '目标目录'
os.chdir(path)
print(glob.glob('*.jpg'))

如果想获取完指定目录下的文件名后再返回一开始的工作目录,则可以使用os.getcwd()先暂存当前工作目录,等获取完再切回来,参考代码如下:

import os,glob
old_path = os.getcwd()
new_path = '目标目录'
os.chdir(new_path)
print(glob.glob('*.jpg'))
os.chdir(old_path)

三、小案例

可参考之前写过的一篇文章《Python 利用os模块批量修改文件名 并打包成可执行程序》。
通过os模块批量修改文件名,如果是本地有Python环境则可不必打包成可执行程序,直接运行代码即可。如果是给没有Python环境的伙伴则可以考虑打包起来。




更多方法可参考官方文档:
os
os.path




<下节预告:debug>


- End -

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 基础合集12:os库文件操作 的相关文章

随机推荐

  • jQuery快速开发

    1 jQuery概述 简单理解 就是一个快速 简洁的JavaScript库 为了快速方便的操作DOM 对原生JavaScript进行封装存放 2 jQuery基本使用 2 1 DOM对象和jQuery对象 用原生JS获取来的对象就是DOM对
  • MDETR-link

    MDETR论文阅读 MDETR Modulated Detection for End to End Multi Modal Understanding NYU Facebook 译自Ryan1216 导语 在过去的很长一段时间中 图像目标
  • C++ 抛出并捕获多个异常

    Project20161020 cpp 定义控制台应用程序的入口点 include stdafx h include
  • 关于三级指针

    include
  • WIN11安装WSL2到其他盘及0x80370120错误解决

    最近尝试着使用WSL2运行虚拟机 写一下安装步骤 及一些问题的解决 第一步 以管理员启动powershell 第二步 使能虚拟化平台 dism exe online enable feature featurename VirtualMac
  • linux服务器崩,linux – 我的服务器崩溃了.这是日志.什么可能发生?

    当事情崩溃时 这是 var messages的内容 Dec 21 19 47 45 localhost kernel cut here Dec 21 19 47 45 localhost kernel WARNING at net sche
  • Transformers从零到精通教程——Model

    文章目录 1 在线加载 2 模型下载 3 离线加载 4 模型加载参数 5 模型调用 5 1不带Model Head的模型调用 5 2带Model Head的模型调用 from transformers import AutoConfig A
  • 插入u盘后显示驱动有问题,应该如何修复&文件太大无法拷贝到u盘

    1 首先将U盘插到别的电脑试一下 确定不是接口问题 2 打开cmd命令窗口 输入chkdsk h f 其中h表示的就是你的u盘 3 进行usb接口驱动更新 右键开始菜单 设备管理器 通行串行总线控制器 右键 interl 可扩展 更新驱动程
  • C++:统计小写字母个数

    题目描述 输入一行字符 统计出其中小写字母的个数 输入 一行字符串 总长度不超过255 输出 输出为1行 输出字符串里面小写字母的个数 样例输入 Copy Peking University is set up at 1898 样例输出 C
  • pyqt 万能简易模板(二)

    本文将介绍一些pyqt5基本使用技巧 不借助Qtdesigner 而是全部用代码编写 将实现页面布局 窗口自适应 字体自适应等功能 一般的简易工程均可使用 简单高效 对于pyqt5的一些基本技巧 本文内容基本够用 可以快速实现自己想要的界面
  • 农村有什么适合农村人的小本创业项目?

    近些年新农村的快速发展趋势 农村是销售市场室内空间发展趋势愈来愈宽阔 很多地域发生了一些农村妇女创业的创业人 传统式买卖发展趋势情况近几年来一直走下坡 那麼在农村有什么适合农村人的小本创业项目 农村人的发展趋势在未来愈来愈占上风 比较之下
  • 理解机器学习/深度学习的正则化Regularization概念

    通过防止过拟合来优化预测模型 目录 前言 正文 L2正则化或岭回归 这是如何实现的 改变 值所带来的影响 如何选择lambda的值 多维数据集 L1 Regularization or LASSO regression 改变lambda的效
  • Source Insight 4.0首次安装提示unable to open or create...解决方案

    打开注册表编辑器 windows r 打开运行窗口 输入 regedit enter确认 编辑注册表 一 找到这个文件夹计算机 HKEY CURRENT USER Software Source Dynamics Source Insigh
  • 「长沙 · 中国1024程序员节」来了!

    从资深院士到行业元老再到领域大拿 重磅嘉宾 掌门云集 5 代技术代表人物岳麓对话 9 大操作系统掌门人星城聚首 10 场热门技术分论坛 峰会 覆盖开源技术 操作系统 区块链 黑客松等 100 开源技术英雄年度会面 还有众多创新互动体验 体验
  • 前端 字体样式

    字体样式
  • U3D批处理的静态与动态

    在屏幕上渲染物体 引擎需要发出一个绘制调用来访问图形API 每个绘制调用需要进行大量的工作来访问图形API 从而导致了CPU方面显著的性能开销 Unity在运行时可以将一些物体进行合并 从而用一个绘制调用来渲染他们 这一操作 我们称之为 批
  • TCP快速重传为什么是三次冗余ack

    先理解ACK的基本工作原理 当发送端发送第N 1个包后 接收端答复的ACK序列号实际上跟发送端发送下一个包 也就是第N个包的序列号一致 重复ACK是指在接收方收到乱序报文时 所发出的一类TCP报文 TCP使用报文头的序列号和确认号以有效保证
  • python绘制正弦函数和余弦函数

    题目 根据如下绘图写出相应代码 1 绘图函数 y sin x y cos x x np linspace np pi np pi 256 endpoint True 2 绘制填充区域 紫色区域 2 5
  • PARL与强化学习笔记

    PARL与强化学习笔记 1 预习 1 1MNIST手写识别 1 2 python基础知识 1 3paddle基础知识 1 3 1计算常量的加法 1 1 1 3 2计算变量的加法 1 1 1 3 3使用PaddlePaddle做线性回归 满足
  • Python 基础合集12:os库文件操作

    一 前言 本小节梳理了os常用的一些方法 并介绍一个小案例 环境说明 Python 3 6 windows11 64位 二 os常用方法 注意 使用方法前需要先调用os库 即import os os getcwd 获取当前目录 os chd