复制文件到一个文件夹并进行排序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))
				
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ireport(FusionChartsFree)

    ireport(FusionChartsFree)ireport(FusionChartsFree)留下脚印以备下次之需

    2022年7月14日
    24
  • 计算机专业选Java和Python哪个前景好点?[通俗易懂]

    计算机专业选Java和Python哪个前景好点?[通俗易懂]对于学习计算机专业的小伙伴,面对大二选课,开始陷入Java和python的纠结中,从以后的发展来看,这两个编程语言肯定是要通吃的,但前期的学习,可以有一个侧重点,说一下我自己的观点。应很多小伙伴的要求,我们从就业应用前景和学习难易度来分析一下:一、Java1、就业应用前景从目前的招聘量上来看,Java在编程语言中可以说是常胜将军,经常有各种新出的编程语言向它发起挑战,但是Jav…

    2022年7月8日
    23
  • mt4历史数据下载位置_头榜土豪数据中心

    mt4历史数据下载位置_头榜土豪数据中心    打开MT4,按F2,会出现一个历史数据中心对话框。之前,我直接按下载按钮时,往往下载数据会出错。因此百度了很久,也查看了很多的处理方式,觉得都不尽如人意。不是数据找不到,就是即使找到了下载时也出现问题。    近日又捣弄了一番,跑到MT4中的history文件夹,发现里面有各个我以前申请的模拟帐户,而且是不同公司下的帐户。这突然让我意识到,我在历史数据中心对话框中点击下载时出现的警

    2022年8月15日
    8
  • HttpClient使用详解

    HttpClient使用详解Http协议的重要性相信不用我多说了,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我们再讨论),它不仅是客户端发送Http请求变得容易,而且也方便了开发人员测试接口(基于Http协议的),即提高了开发的效率,也方便提高代码的健壮性。因此熟练掌握HttpClient是很重要的必修内容,掌握HttpClient后,相信对于Http协议的了解会更加深入。一、简介HttpClient是ApacheJakartaCommon下的子项目,用来提供高效的

    2022年7月22日
    11
  • 极速pdf文件打印时此计算机未连接到网络,PDF文件不能打印的五种解决方案[通俗易懂]

    极速pdf文件打印时此计算机未连接到网络,PDF文件不能打印的五种解决方案[通俗易懂]原标题:PDF文件不能打印的五种解决方案有时我们会发现有些PDF文档虽然能够正常打开,点击打印缺没有反应,是打印机坏了吗?当然不是,PDF不能打印90%是被加密,想要正常重新打印其实很简单。方式一:用老版PDF阅读器不常用也是比较难实现一种解决方法,PDF防打印只是设置了个标志位,大多数PDF软件都遵循这个标准,但用某些老版本的PDF阅读器,就会发现它不支持“禁止打印”“禁止复制”的…

    2022年5月25日
    91
  • JAVA小白 编程练习500题 超详细!!!带答案!!!持续更新中~

    JAVA小白 编程练习500题 超详细!!!带答案!!!持续更新中~JAVA小白编程题练习可能有很多刚入门的小白不知道自己如何能快速提升编程技巧与熟练度其实大佬进阶之路只有一个~那就是疯狂码代码!!!实践出真知!!!所以为了大家能够想练习的时候有素材,泡泡给大家整理了一些练习题由于平时比较忙,所以我在不定时努力更新中,欢迎监督~500是立的Flag啊哈哈哈哈,我们共同努力吧,先出个100道,希望能给大家带来帮助~????????????练习题1:接收用户输入的3个整数,并将它们的最大值作为结果输出packagecn.cxy.exec;importj

    2022年4月29日
    60

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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