zl程序教程

您现在的位置是:首页 >  Python

当前栏目

用python实现新建文件夹及移动、复制文件

2023-04-18 14:09:10 时间

一.移动文件时遇到的问题
目标:
根据文件名中的年份判断,将同一个文件夹下的所有文件分别移动到新建的相应年份的文件夹中。

1.提取文件名:

先用.划分,提取前面一部分,之后用_划分,提取第4部分,最后提取年月日中的年份。
!!![a:b]是提取从a到b-1之间的数,而不是a到b!!!
所以[0:4]是0-3之间的数!!!

2.判断年份,相等即创建文件夹:
在这里插入图片描述
!!!注意变量的数据类型!!!

3.新建文件夹:
一开始直接用os.mkdir(路径),并且想要加上新建的文件夹名,但是一直不对,后来先定义了路径(路径+’//’+str(文件名)),然后放到os.mkdir中,后发现循环中之前创建了就不能再创建相同的文件夹了,采用定义新建文件夹函数的方式(加上了判断文件夹是否存在):
在这里插入图片描述
之后在主体代码中调用这个函数即可实现根据文件名判断将所有文件分别移动到新建的各个符合条件的文件中!

二.复制文件时遇到的问题
目标:
将各个文件夹中的文件都复制到新建的一个文件夹中。

1.判断是否有目标文件夹,若没有则新建一个:
在这里插入图片描述
由于已经写过新建文件夹相关,这里就没什么问题了。

2.循环遍历各个文件夹下的文件,获取文件名并复制到新建的文件夹中:
一开始获取了文件名,但是忘记要循环一个个复制了;同时对shutil.copy用法不是很清楚,导致不知道用的是路径还是文件名,出现错误:Permission denied,搅和了好久,解决:
1)加上循环,把获取的文件名放到循环下面
2)shutil.copy(原文件夹路径+文件名,复制到的文件夹路径+文件名)
这样就能实现将多个文件夹下的文件都复制到一个新建的文件夹中!

附python对于shutil.copy的说明:
https://docs.python.org/3.6/library/shutil.html

参考:
移动文件:https://blog.csdn.net/seanblog/article/details/78885423
各种函数等:https://blog.csdn.net/sinat_38682860/article/details/93388503
创建文件夹、文件:https://www.jb51.net/article/201672.htm