博主今天需要将2.5w张高清图像挪到另外一个文件夹,在windows上剪切,粘贴操作,结果速度低到每秒剪切两张,大约需要4,5个小时才能剪切完成(主要是因为windows在文件操作的时候的缓存机制以及文件校验过程),想起之前利用python的shutil包,移动文件速度很快,试着写了一个小脚本,只花了20多分钟,速度简直吊打windows10的剪切,现在把代码贴出来分享下。
"""author:yuankun,function:将一个文件夹中的文件移到另外的一个地址,在移动大量文件的时候,该方法比较快,date:20180821"""
import shutil
import os
import argparse
parser = argparse.ArgumentParser(description='move faster,eg: python move.py --type=copy --input=./2/ --output=./3/')
parser.add_argument('--type', default='copy',help='move or copy ')
parser.add_argument('--input', default=None,help='input dir,,eg:/home/1/2/ or ./1/2/')
parser.add_argument('--output', default=None,help='output dir,,eg:/home/1/2/ or ./1/2/')
args = parser.parse_args()
input_dir=args.input
output_dir=args.output
type=args.type
if not os.path.exists(output_dir):
os.mkdir(output_dir)
data=os.listdir(input_dir)
if type=='move':
for i in range(len(data)):
print("正在移动:", data[i])
shutil.move(input_dir + str(data[i]),output_dir + str(data[i]))
print("移动结束")
if type=='copy':
for i in range(len(data)):
print("正在复制:", data[i])
shutil.copy(input_dir + str(data[i]),output_dir + str(data[i]))
print("复制结束")
该段代码运行方式如下
python move.py --type=copy --input=./2/ --output=./3/
可以选择copy或者move
路径也可以使用绝对路径