python - 根据列表过滤文件夹中的特定文件

标签 python pyspark

我有一个包含很多文件的文件夹。这些文件以单独的名称保存。我想根据名称列表提取文件​​。最后,这些提取的文件应保存在一个新文件夹中。

我已导入特定文件夹中的所有文件

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/

相关文章:

python - PyObject_CallFunction 访问冲突写入位置 0x0000000c

python - pandas 数据框 reshape /透视

python - ImportError : Could not import settings 'settings.py' (Is it on sys. path?): No module named py

python - 绘制法国国旗

python - 基于保留重复项的公共(public)列的查找合并两个 dfs

python - 隐藏 pandas DataFrame 中的重复行

PySpark-将 map 功能添加为列

apache-spark - PySpark 数据帧上的自定义聚合

amazon-web-services - AWS Glue 动态框架 - 如果没有数据,则没有列标题

python - PySpark - 将列表的列转换为行