之前朋友分享给我了大批量的电子书资源,其实本身整理的还是有一定顺序的,但是却是文件夹套着文件夹的,有的文件夹下面有电子书文件也还有子文件夹,而且有很大一部分资源是放在了以作者名字命名的文件夹下的,翻起来也不太方便,个人不是很喜欢。
我一直很想把所有电子书文件都直接存在同一个目录下,但是很明显自己手动拉出来简直会要我的命,于是前两天就捣鼓了一晚上+一上午的时间谢了这个代码。
移动完了全部文件才想起来写这篇文章,所以我也就没有之前的文件夹截图了。不过之前的格式基本是这样子的:
没错就是这样子的,一共三层文件夹,有的下面只有文件,有的只有子文件夹,也有的子文件夹和文件并存,而且文件的模式也是各种各样。想写一个代码把这些情况都包括了也是挺麻烦的。
基本思路就是利用os.listdir()来读文件夹下面的文件名字,逐个排除每一个,是文件的就移动去目标文件夹下面,如果是文件夹就打开,再利用os.listdir()读取并排除,直到完成三层的loop。
下面给大家附上我的代码截图以及简单解释:
因为这两篇代码真的是经历过不下20次的修改,而且我本身也是新手一个,所以非常明显通篇很多地方风格并不统一。另外这个代码本身也只能用于层数不那么多的系统,所以我也在研究如何能够把层数也包括在其中,欢迎小伙伴们来讨论啊。
另外对于刚才被掏空的那些文件夹,我也另外写了一篇小代码来对付他们。不过因为我找了半天也没找到那个function可以直接删除文件夹的,所以只能把他们移动到一个叫做empty的文件夹,这样我就知道在这里的肯定都是空的可以一键删除,就不用一个一个的翻过去来确认啦。
ps:小伙伴一定要确认想要移动去的那些文件夹都已经创建好,比如existing,或者to_path。我其中又一次不小心把一个文件夹给删掉了,然后代码跑起来之后把书都移动到了一个不明格式文件中,我想尽了办法也打不开,所以我的书也拿不出来了,所以大家记得先备份吧备份吧备份吧。
领取专属 10元无门槛券
私享最新 技术干货