学习Excel技术,关注微信公众号:
excelperfect
Q:我有很多个Excel文件,Excel文件名和文件夹及其子文件夹的名字相同,我想把这些Excel文件移动到同名的的文件夹或其子文件夹中,而我又不想手动一个一个移动,该如何自动快速实现?
为方便讲解,假设文件和文件夹都在C盘的test文件件中,如下图1所示。
图1
文件夹树形图如下图2所示。
图2
示例中,文件夹及其子文件夹的名字与test文件夹中Excel工作簿的名字相同。我们要做的就是,将Excel工作簿移到与其名字相同的文件夹和子文件夹中。
A:VBA中有专门操控文件的对象模型,有兴趣的朋友可以试试,但我们这里使用Python来实现。
Python代码很简单,如下:
import os,shutil
os.chdir("C:\\test")
myfiles = []
for myfile inos.listdir():
if myfile.endswith('xlsx'):
myfiles.append(myfile.split('.')[0])
for folderName,subfolders, filenames in os.walk("C:\\test"):
myfolder = folderName.split(os.path.sep)
if myfolder[len(myfolder)-1] in myfiles:
shutil.move(myfolder[len(myfolder)-1] +'.xlsx', folderName)
短短的10行代码,将问题完美解决。
代码先导入os模块和shutil模块。
os.chdir("C:\\test")
设置test文件夹为当前目录。
for myfile inos.listdir():
if myfile.endswith('xlsx'):
myfiles.append(myfile.split('.')[0])
列出当前文件夹中的所有文件,如果文件扩展名以xlsx结尾,则将其名字添加到列表中。
for folderName,subfolders, filenames in os.walk("C:\\test"):
myfolder = folderName.split(os.path.sep)
if myfolder[len(myfolder)-1] in myfiles:
shutil.move(myfolder[len(myfolder)-1] +'.xlsx', folderName)
遍历test文件夹中的文件夹和子文件夹,获取其文件夹名,看是否有相同名称的Excel工作簿。如果有,则将该工作簿移到相应的文件夹中。
运行代码后,自动将Excel工作簿移至相应的文件夹,如下图3所示。
图3