用Python批量把文件复制到另一个文件夹的实现方法
作者:伪君子 发布时间:2021-03-10 14:53:11
0 前言
大概是三个月前,有个人找我说要我帮忙写几行代码,功能是把一个文件夹里面的所有文件拆分成 200 个文件一个文件夹,很简单的。
我理解了之后,觉得还是挺简单的,花了半个小时写出来了,代码也不多,代码和思路都可以分享一下。
1 环境说明
Win10 系统下 Python3,编译器是 Pycharm。
需要安装 shutil 这个第三方库,直接 pip install shutil 就可以了。
2 代码
先导入需要用到的库,os 是用来切换路径和创建文件夹的。
shutil 是用来复制黏贴文件的
import os
from shutil import copy
i 用来计算文件数量,当 i 是 200 的倍数时,k 会 +1;k 用来计算新建文件夹的数量,方便创建文件夹。
save_dir 是想把复制出来的文件存放在的路径
# i 用来计算文件数量,k 用来计算新建文件夹的数量
i = 0
k = 0
# 想保存到的根路径
save_dir = r'F:\666'
# 如果目录不存在,则创建
if not os.path.isdir(save_dir):
os.makedirs(save_dir)
dir_name 是新的文件夹的命名;file_path 是想拆分的文件夹所在路径,也就是一大堆文件所在的路径。
os.listdir(file_path) 是获取指定路径下包含的文件或文件夹列表,在 Unix, Windows 下使用。
# 想保存的名字
dir_name = "junzi"
# 想拆分的文件夹所在路径
file_path = r'F:\ALL'
# 获取 file_path 下的文件和文件夹列表
# 因为 file_path 里面没有文件夹,所以不处理有文件夹的情况
pathDir = os.listdir(file_path)
获取到了列表,那就一个一个进行遍历。0 是 200 的倍数,所以一开始 k 的值会 +1 。
allDir 是文件的名字+后缀名。from_path 就是当前这个被遍历出来的文件的完整路径,to_path是这个文件要复制到的路径。
接着 copy(from_path, to_path) 完成复制黏贴,最后 i 自增1.
for allDir in pathDir:
if( (i%200) == 0):
print("200 的倍数,新建一个文件夹")
k += 1
print(allDir)
from_path = os.path.join(file_path, allDir)
to_path = save_dir + "\\" + dir_name + str(k)
# 如果 to_path 目录不存在,则创建
if not os.path.isdir(to_path):
os.makedirs(to_path)
copy(from_path, to_path)
i += 1
3 相关说明
shutil 的 copy() 是复制到一个新的地方,创建时间、修改时间、访问时间都是新的,copy2() 则是会创建时间、修改时间、访问时间这些也复制过去。
来源:https://segmentfault.com/a/1190000020086614
猜你喜欢
- 脚手架(vue-cli)(一)什么是脚手架概念:是一种用于快速开发Vue项目的系统架构优点:能够帮助咱们快速的开发项目缺点:由于脚手架适用于
- 如何用METADATA替换ADOVBS.INC? 在ASP中,使用组件时,如ADO,得先包含
- 在编写JavaScript代码的时候存在的一些方法和技巧,虽然有时候条条大路都通向罗马,但是也许总会有那么一条最短的路径可走。本文将一些都知
- 1. 使用性能分析器Golang提供了内置的性能分析工具 pprof,可以帮助您分析和优化应用程序的性能瓶颈。下面是使用 
- 在cmd控制台内,vue -V 可看到vue-cli脚手架的版本号,现在好多帖子误写成vue版本号。如下图:vue版本号在项目中,找到pac
- 本文实例讲述了Bootstrap简单实用的表单验证插件BootstrapValidator用法。分享给大家供大家参考,具体如下:Bootst
- 本文实例讲述了JS实现求5的阶乘运算操作。分享给大家供大家参考,具体如下:方案一:利用while循环function factorial(n
- 本文实例为大家分享了python实现网页自动签到功能的具体代码,供大家参考,具体内容如下第1步、环境准备(用的chrome浏览器)1.安装s
- MySQL Index索引是一种数据结构,可以是B-tree、R-tree、或者hash结构。其中,B-tree适用于查找某范围内的数据,可
- python random库简单使用demo当我们需要生成随机数或者从一个序列中随机选择元素时,可以使用 Python 内置的 random
- 这句话后面的1200是什么单位来的啊?delete from online where datediff(""s&quo
- 在MySQL中删除数据有两种方式:truncate(截短)属于粗暴型的清空delete属于精细化的删除删除操作如果你需要清空表里的所有数据,
- Matplotlib简述:Matplotlib是一个用于创建出高质量图表的桌面绘图包(主要是2D方面)。该项目是由JohnHunter于20
- Office家族成员中,人们对于Access 2000的了解,往往只局限在它的操作界面中,对于数据库管理的功能仍只是停留在建立表、数据输入、
- 初学tensorflow,如果写的不对的,请更正,谢谢!tf.reshape(tensor, shape, name=None)函数的作用是
- python中.split()只能用指定一个分隔符例如:text='3.14:15'print text.split(
- 首先,让我们介绍一下什么是pytorch,它是一个基于Python的开源深度学习框架,它提供了两个核心功能:张量计算和自动求导。张量计算张量
- Go语言作为一门开源的编程语言,已经广泛应用于各个领域。作为一门现代化的编程语言,Go语言支持模块化开发,而包和依赖管理是模块化开发的重要组
- pytorch中尝试用多进程加载训练数据集,源码如下:trainloader = torch.utils.data.DataLoader(t
- 关于鼠标回调函数的说明可以参考:opencv-python的鼠标交互操作cv2.rectangle()函数说明参数说明导入cv2后,通过he