本文介绍基于Python语言,针对一个文件夹下大量的Excel表格文件,基于其中每一个文件的名称,从另一个文件夹中找到与这一文件夹中文件同名的文件,并将找到的同名文件复制到第三个文件夹中的方法。
首先,我们来明确一下本文的具体需求。现有一个文件夹,其中有大量的Excel表格文件(在本文中我们就以csv格式的文件为例)——这一文件夹中的文件其实也就是我们通过文章Python筛选出多个Excel中数据缺失率高的文件筛选得到的文件;如下图所示。
此外,我们还有一个文件夹(我们将其称作大文件夹),其中存放了较之上图所示的文件夹中,更多的Excel表格文件;我们希望实现的是,从这个大文件夹中,找到与上图所示文件夹中Excel表格文件同名的文件,并将找到的同名文件复制到另一个新的文件夹中。
知道了需求,我们就可以开始代码的撰写。其中,本文用到的代码如下所示。
1# -*- coding: utf-8 -*-
2"""
3Created on Tue May 16 22:32:00 2023
4
5@author: fkxxgis
6"""
7
8import os
9import shutil
10
11def copy_file_with_name(source_path, target_path, new_path):
12 source_file = os.listdir(source_path)
13
14 for file in source_file:
15 target_file_path = os.path.join(target_path, file)
16
17 if os.path.isfile(target_file_path):
18 new_file_path = os.path.join(new_path, file)
19 shutil.copy(target_file_path, new_file_path)
20
21copy_file_with_name("E:/01_Reflectivity/99_Model_Training/00_Data/02_Extract_Data/14_PointSelection/LowMissingRate",
22 "E:/01_Reflectivity/99_Model_Training/00_Data/02_Extract_Data/13_AllYearAverage",
23 "E:/01_Reflectivity/99_Model_Training/00_Data/02_Extract_Data/15_8DaysSynthesis")
上述这段代码中,我们首先导入了os和shutil模块,os模块用于处理文件和文件夹的操作,shutil模块用于执行文件的复制操作。然后定义了一个名为copy_file_with_name的函数,该函数接受3个参数:source_path表示源文件夹路径,target_path表示目标文件夹(也就是上面提到的大文件夹)路径,new_path表示新的文件夹路径。source_file = os.listdir(source_path)获取源文件夹中的所有文件,并将文件列表赋值给source_file。
最后一行代码调用了copy_file_with_name函数,传入了三个文件夹的路径作为参数,从一个文件夹中复制文件到另一个文件夹中。
运行上述代码后,我们即可在new_path这一文件夹中,找到我们复制好的文件;其中,很显然new_path这一文件夹的文件数量与source_path文件夹中的文件数量是一致的。
至此,大功告成。
领取专属 10元无门槛券
私享最新 技术干货