python 文件函数_Python 文件操作函数

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。同样的结构用于狗数据集的构建。

代码:

importshutilimportos

os.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')defgetFileName(num, category):return category+'.'+str(num)+'.jpg'

defsetFileName(num, category):

num=str(num)

num= (3-len(num))*'0'+numreturn category+num+'.jpg'

for 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 目录下,直接手动操作就好了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值