复制文件到一个文件夹并进行排序copy_imgs_to_dir

复制文件到一个文件夹并进行排序copy_imgs_to_dir

文件存储方式

|--parentdir
|----copy_imgs_to_dir.py
|----Video0
|--------xxx0.mp4
|--------xxx1.mp4
|----Video1
|--------xxx0.mp4
|--------xxx1.mp4
|----Video2
|--------xxx0.mp4
|--------xxx1.mp4

创建文件名为:copy_imgs_to_dir.py

import os		#专门用于文件处理
import sys        #system系统处理文件
filedir = os.path.dirname(sys.argv[0])      #获取脚本所在目录   sys.argv[0]表示获取脚本的位置
os.chdir(filedir)       #将脚本所在的目录设置为工作目录
wdir = os.getcwd()        #.getcwd() 可以直接输出
print('当前工作目录:{}\n'.format(wdir))      #打印当前工作目录  输出格式一定要用.format()

import shutil   #高级文档处理

image_dir = 'Images_Repo'        
if not os.path.exists(image_dir):   #检测是否存在image_dir文件夹
        os.mkdir(image_dir)        #创建image_dir文件夹

specified_id = 1            
files = os.listdir(image_dir)
file_idxs = [int(file.split('.')[0]) for file in files]
idx = max(file_idxs) if len(file_idxs) != 0 else 1
idx = max(idx+1, specified_id)

f = open(image_dir +'_info.txt', 'a+')
f.seek(0,0)  #移动到文件头
lines = f.readlines()
print(len(lines))
f.seek(0,2)  #移动到文件尾
existed_img = [os.path.basename(line.split(' ')[0]) for line in lines]    
i, j = 0, 0
for parent, dirs, files in os.walk('DATA'):         #浏览整个DATA文件夹 
	parent_base = os.path.basename(parent)         #parent指的是包含脚本的文件夹
	if ('Picture' in parent_base):                  #每次只能处理一个,要么处理文件夹,要么处理文档
		for file in files:
			if file not in existed_img:
				file_ext = file.split('.')[-1]
				new_name = str(idx).zfill(8) + '.' + file_ext
				image_src = os.path.join( parent, file)          #os.path.join()函数用于路径拼接文件路径,例如:parent/***/file
				image_dst = os.path.join( image_dir, new_name)   
				if not os.path.exists(image_dst):    #os.path.exists() 判断文件是否存在
					shutil.copy(image_src, image_dst)     #将老文件复制到新文件中,老文件-->新文件
					idx += 1
					j += 1
					new_line = image_src + '   ------>   ' +image_dst +'\n'
					f.write(new_line)
					print('本次复制了文件{:25s}到文件{:25s}'.format(file, new_name))     #最大的特点就是不用理会数据类型的问题
			else:
				i += 1
				print('文件{:25s}此前已经被复制'.format(file))
f.close()
print('本次跳过了{:6d}个此前已被复制的文件'.format(i))
print('本次复制了{:6d}个文件'.format(j))
				
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/2160.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • docker离线安装mysql镜像_安装rabbitmq

    docker离线安装mysql镜像_安装rabbitmqDocker离线安装RabbitMQ1、进入dockerhub,搜索rabbit镜像https://registry.hub.docker.com/_/rabbitmq/2、进入官方的镜像,我们选择带有“management”的版本(包含web管理界面)https://hub.docker.com/_/rabbitmq?tab=tags#通过以下方式无法查询到,问题未知[root@localhost~]#dockersearch3.7.7-managementErrorres

  • Java静态全局变量与全局变量的区别[通俗易懂]

    Java静态全局变量与全局变量的区别[通俗易懂]Static全局变量与普通的全局变量有什么区别?答:  全局变量(外部变量)的说明之前再冠以static就构成了静态的全局变量。全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别在于非静态全局变量的作用域是整个源程序,当一个源程序由多个原文件组成时,非静态的全局变量在各个源文件中都是有效的。而静态全局变量则限制了其作用域,即只在定义该变量…

    2022年10月23日
  • java redis锁_Java中Redis锁的实现[通俗易懂]

    java redis锁_Java中Redis锁的实现[通俗易懂]由于具体业务场景的需求,需要保证数据在分布式环境下的正确更新,所以研究了一下Java中分布式锁的实现。Java分布式锁的实现方式主要有以下三种:数据库实现的乐观锁Redis实现的分布式锁Zookeeper实现的分布式锁其中,较常用的是前两种方式,但是数据库实现方式需要较多的数据库操作,所以最终选择的是用Redis实现分布式锁。最初考虑分布式锁的数据安全性的时候,只考虑到两点。第一,Redis锁需要…

  • 蓝奏软件库合集[通俗易懂]

    蓝奏软件库合集[通俗易懂]蓝奏软件库合集文章标签游戏……

  • GO分析-GOseq的使用教程[通俗易懂]

    GO分析-GOseq的使用教程[通俗易懂]GOseq的介绍GOseq是一个R包,用于寻找GOterms,即基因富集分析。此方法基于Walleniusnon-centralhyper-geometricdistribution。相对

  • golang 激活码 不对【在线破解激活】

    golang 激活码 不对【在线破解激活】,https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号