python—我可以让这个数组成为一行代码,如果它找到了文件,就只添加到数组中吗

0h4hbjxa  于 2021-09-08  发布在  Java
关注(0)|答案(1)|浏览(228)

我正在尝试制作这一行代码数组。它只需要返回在其中一个目录中找到的文件。

files = ['text.txt', 'fdsafdsa.txt', 'example.txt']

def search_file(file):
    return [glob.glob(f'**/{i}', recursive=True) for i in file]

found = search_file(files)

# output contains the array also with empty objects

输出包含一个也包含空对象的数组。
我的问题是,是否有可能创建一个关于我对glob所做操作的if语句

rks48beu

rks48beu1#

这个怪物删除空列表,并在一行中展平

def search_file(file):
    return [item for sublist in [glob.glob(f'**/{i}', recursive=True) for i in file] if sublist != [] for item in sublist]

这是一个更可读的版本

def search_file(file):
    matches = [glob.glob(f'**/{i}', recursive=True) for i in file]
    # remove [] and flatten
    return [item for sublist in matches if matches != [] for item in sublist]

相关问题