首页 > 代码库 > Python 文件操作函数

Python 文件操作函数

这个博客是 Building powerful image classification models using very little data 的前期准备,用于把图片数据按照教程指示放到规定的文件夹中。

python 文件处理主要用到 os 模块和 shutil 模块,‘sh‘ 大概是 bash 的意思

os.chdir(‘path‘) 改变当前路径到 path

os.listdir(‘path‘) 输出 path 路径下所有的文件名

os.makedirs(‘path/dirname‘) 在 path 路径下创建 dirname 文件夹

shutil.copy2(‘path/filename‘, ‘newpath‘) 将 path 路径下的 filename 文件拷贝到 newpath 路径下

 

场景:按照上面的教程,我们需要先下载 kaggle 猫狗识别大赛的源文件,分为 train 和 test1,解压后放到 cat_dog 文件夹,然后,我们将构建符合教程要求的文件目录,其结构如下图所示(注意文件名的变化):

data/    train/        dogs/            dog001.jpg            dog002.jpg            ...        cats/            cat001.jpg            cat002.jpg            ...    validation/        dogs/            dog001.jpg            dog002.jpg            ...        cats/            cat001.jpg            cat002.jpg            ...

依据教程要求,需要从 train 文件夹中将 cat.000.jpg 到 cat.999.jpg 拷贝到 data/cats/cat000.jpg 到 data/cats/cat999.jpg,将 cat.1000.jpg 到 cat.1399.jpg 拷贝到 validation/cats/cat000.jpg 到 validation/cats/cat399.jpg。同样的结构用于狗数据集的构建。

代码:

import shutilimport osos.chdir(cat_dog)os.makedirs(train)os.makedirs(train/dogs)os.makedirs(train/cats)os.makedirs(validation)os.makedirs(validation/dogs)os.makedirs(validation/cats)def getFileName(num, category):    return category+.+str(num)+.jpgdef setFileName(num, category):    num = str(num)    num = (3-len(num))*0+num    return category+num+.jpgfor num in range(1000):    cat = getFileName(num, cat)    dog = getFileName(num, dog)    new_cat = setFileName(num, cat)    new_dog = setFileName(num, dog)    shutil.copy2(train1/+cat, train/cats/+new_cat)    shutil.copy2(train1/+dog, train/dogs/+new_dog)for num in range(400):    cat = getFileName(1000+num, cat)    dog = getFileName(1000+num, dog)    new_cat = setFileName(num, cat)    new_dog = setFileName(num, dog)    shutil.copy2(train1/+cat, validation/cats/+new_cat)    shutil.copy2(train1/+dog, validation/dogs/+new_dog)

 ps:为了使得构建的 train 与之前下载的 train 文件夹不重名,将之前的 train 文件夹改为 train1.

pps: 没注意看原教程要求,这里构建的 train 文件夹和 validation 文件夹应该放到 data 目录下,直接手动操作就好了。

Python 文件操作函数