Python的简单文件操作——os/shutil接口

Python的简单文件操作——os/shutil接口

  • 导入模块
  • 文件路径拼接
  • 文件夹的访问
  • 文件删除
  • 文件复制

学习Deep Learning有时候需要处理一些数据量较大的源数据集,那么简单的文件操作必不可少。详细的介绍可参阅 Python文档—os接口模块。

导入模块

import os
import shutil
import random

os是操作系统接口模块;shutil是高级文件接口模块,一般用来copy文件;random是用于打乱数据集时使用的。

文件路径拼接

root = "E:\\workspace"
dataset_dir = os.path.join(root, "data")
xxx_dir = os.path.join("..", "..", "XXX")

在拼接路径前,可以先定义根目录root,在root的基础上进行访问。此时dataset_dir = “E:\workspace\data”. 对于"…“参数,它意味着访问上一级目录。xxx_dir即在当前代码的目录下,访问上两级目录,再进入XXX文件夹。(注意:路径不要写‘\’,尽量是”\"或‘/’,因为容易跟转义字符搞混而出错)

文件夹的访问

os.walk()方法语法格式如下:

os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])

参数
top – 是你所要遍历的目录的地址, 返回的是一个三元组(root,dirs,files)。

  • root 所指的是当前正在遍历的这个文件夹的本身的地址
  • dirs 是一个 list ,内容是该文件夹中所有的目录的名字(不包括子目录)
  • files 同样是 list , 内容是该文件夹中所有的文件(不包括子目录)

下面是一个例子,访问了子文件夹下的每个文件,并把jpg格式的过滤出来存入imgs中,最后拉乱了顺序:

    for root, dirs, files in os.walk(dataset_dir):
        for sub_dir in dirs:

            imgs = os.listdir(os.path.join(root, sub_dir))
            imgs = list(filter(lambda x: x.endswith('.jpg'), imgs))
            random.shuffle(imgs)
            img_count = len(imgs)

文件删除

os.remove(path)

文件复制

shutil.copy(src_path, target_path)

src_path的文件需要存在,可以使用if os.path.exists(src_path):检测。

你可能感兴趣的:(Python,python)