我有一个包含很多文件的文件夹。这些文件以单独的名称保存。我想根据名称列表提取文件。最后,这些提取的文件应保存在一个新文件夹中。
我已导入特定文件夹中的所有文件
list_files = [file[0] for file in list_files]
下面是文件夹中的文件列表
['C:/A/results/fie_d_t_group_Jack.xlsx',
C:/A/results/fie_d_t_group_Bill.xlsx',
C:/A/results/fie_d_t_group_Cort.xlsx',
C:/A/results/fie_d_t_group_Niel.xlsx',
C:/A/results/fie_d_t_group_Van.xlsx',
C:/A/results/fie_d_t_group_Dick.xlsx',
C:/A/results/fie_d_t_group_Nick.xlsx']
接下来,我从数据框中创建了一个列表,其中包含我要过滤的特定名称
from pyspark.sql.functions import pow, col
import pyspark.sql.functions as f
data = [
('a', 2016,'Jack'),
('a', 2017,'Bill'),
('a', 2018,'Dat'),
('a', 2015,'Jane'),
('b', 2016,'Cort'),
('b', 2017,'Nick'),
('b', 2018,'Lam'),
('b', 2015,'Jane')
]
df = spark.createDataFrame(data, ["A", "B","C"])
name_list = list(df.select('C').toPandas()['C'])
name_list
我想从列表中过滤这些文件并将这些文件保存在新位置。提取的文件应如下列表
['C:/A/results/fie_d_t_group_Jack.xlsx',
C:/A/results/fie_d_t_group_Bill.xlsx',
C:/A/results/fie_d_t_group_Cort.xlsx',
C:/A/results/fie_d_t_group_Nick.xlsx']
此文件列表应保存在新位置。
最佳答案
您可以使用以下函数轻松完成此操作:
import re
def filter_list(string, substr):
return [st for st in string if any(sub in st for sub in substr)]
ls_1 = ['C:/A/results/fie_d_t_group_Jack.xlsx',
'C:/A/results/fie_d_t_group_Bill.xlsx',
'C:/A/results/fie_d_t_group_Cort.xlsx',
'C:/A/results/fie_d_t_group_Niel.xlsx',
'C:/A/results/fie_d_t_group_Van.xlsx',
'C:/A/results/fie_d_t_group_Dick.xlsx',
'C:/A/results/fie_d_t_group_Nick.xlsx']
ls_2 = ["Jack", "Bill", "Cort", "Nick"]
filter_list(ls_1, ls_2)
# ['C:/A/results/fie_d_t_group_Jack.xlsx',
# 'C:/A/results/fie_d_t_group_Bill.xlsx',
# 'C:/A/results/fie_d_t_group_Cort.xlsx',
# 'C:/A/results/fie_d_t_group_Nick.xlsx']
如果您想将它们保存到其他位置,现在您已经有了要保存的文件列表,您可以使用shutil.move()
移动它们。功能。
关于python - 根据列表过滤文件夹中的特定文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58370989/