python下复制文件并重命名

由于需要将三个文件夹下的图片拷贝到一个文件夹下,并按照1.jpg,2.jpg,3.jpg,… 的连续的序列排列,因此,先将三个文件夹下的图片复制到一个JPEGImages的文件下,然后再新建一个small文件夹,利用下面的代码进行复制和重命名,其中,用到了以下几个模块和功能:
(1)shutil模块
copyfile功能,复制文件
(2)os模块
listdir功能,将路径下的所有文件列出来
path.exists功能,判读文件是否存在
(3)生成器功能
a = [i+bias for i in range(n)],生成从bias到bias+n的序列

#coding=utf-8
#将jpg复制并重命名
import os,shutil
path_src = '/media/win_data/gray3/VOC2007_Small/JPEGImages/'
path_dst = '/media/win_data/gray3/VOC2007_Small/small/'
n = os.listdir(path_src)
len0 = len(n)
#print(len0)
bias = 13579#起始序列
ends = 34862#结束序列
cnt = 1
inds = [i+bias for i in range(ends-bias)]
for i in inds:
    file_src = path_src + 'image{:08d}.jpg'.format(i)#str(i) + '.jpg'
    print(file_src)
    file_dst = path_dst + str(cnt) + '.jpg'
    if os.path.exists(file_src):#判断文件是否存在,以防中间序列不连续
        shutil.copyfile(file_src,file_dst)
        cnt = cnt +1
    

MATLAB 版本:

%移动任意命名的xml和jpg,并按序列重命名
ii = 792;%起始序号
%frames为源数据的个数上限
%源图片路径
% [filename,pathname] = uigetfile('.jpg','请选择一个数据文件');
% pathold = pathname;
f = dir(pathin);
frame = size(f,1);
pathold = 'G:\old\';
%新路径
pathnew = 'G:\new\';
pathnew2 = 'G:\new\';

for i  = 1:frame-2
    filename_old = f(i+2).name;
    if strcmp(filename_old(end-3:end),'.jpg')
        filenameold1 = [pathold filename_old(1:end-4) '.xml'];
        filenameold = [pathold filename_old];
        if exist(filenameold1,'file')
            %新的文件名序号
            num_strnew = sprintf('%d',ii);
            %复制jpg
            filenamenew = strcat(pathnew,num_strnew,'.jpg');
            copyfile(filenameold,filenamenew);
            %复制xml
            filenamenew1 = strcat(pathnew2,num_strnew,'.xml');
            copyfile(filenameold1,filenamenew1);
            ii = ii+1;
        end
    end
end
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值