将电脑里大于1M的图片备份(C盘除外)

 首先是用psutil中disk_partitions的方法,列出当前磁盘的清单。

 然后写一个search_file方法,查找所有的文件,筛选出是图片的文件,保存在一个文件夹。

 文件夹是用os.mkdir()的方法创建,并且用disk_partitons存放在在当前计算机的第二个机械盘下。

  

import os
from shutil import copy
from psutil import disk_partitions
'''
算法:
	判断图片格式:.jpg .png .JPGE
	判断图片大小>(SIZE)M
	生成工作日志

阻塞:
	如何获取磁盘列表
	如何复制文件
	如何获得文件后缀名和判断文件大小

'''
targetDir=disk_partitions()[1][1]+"targetDir"#创建目标文件夹
SIZE=1
list_log=[]
#获取磁盘信息
def get_disk():
	list_disk=[]
	for i in disk_partitions():
		list_disk.append(i[0])
	return list_disk

#遍历寻找图片
def gci (path):
	parents = os.listdir(path)
	global targetDir
	for parent in parents:
		try:
			child = os.path.join(path,parent)
			if targetDir != child:
				if os.path.isdir(child):
					gci(child)
				else:
					suffix=os.path.splitext(child)[1]#获得后缀名
					if suffix=='.png' or suffix=='.jpg' or suffix=='.JPGE':#判断是否为图片文件
						child_size=int(os.path.getsize(child)/1024/1024)#获得图片大小
						if child_size>SIZE:#大于1M则打印
							print('{0}'.format(child))
							global list_log
							list_log.append(child)
							copy(child,targetDir)
		except:
			None

def main():
	print('------------------------------{0}------------------------------'.format('复制除C盘之外的所有图片'))
	try:			
		os.mkdir(targetDir)
	except:
		None
	list_disk=get_disk()
	for sub_disk in range(1,len(list_disk)):
		gci(list_disk[sub_disk])

	with open(targetDir+'/log.txt','w+') as f:
		for i in list_log:
			f.write(i+'\n')
	print('------------------------------文件保存在:%s------------------------------' % targetDir)


if __name__=='__main__':
	main()

ps:

    2019/3/15:

         ps:
         进程运行的时候,会打印回收站里的路径,但不会复制回收站里的文件
         本来是想手动输入SIZE,但sublime的input函数需要装插件,就没做
         改进了迭代部分,不会打印和复制目标目录(D://targetDir)下的图片

 

你可能感兴趣的:(将电脑里大于1M的图片备份(C盘除外))