从其他lis读取路径后创建丢失文件列表

2024-10-04 03:20:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个文件路径列表listt

['/data0/river_routes.nc',
 '/dat/rho0_profile.nc',...]

我想检查它们是否存在,如果不存在-创建一个列表list1,其中只包含丢失文件的路径

我可以使用以下方法创建list1充满True/False

import os,time
list1 = []
for file in listt:
    list1.append(os.path.isfile(file))

但我不知道如何以最有效的方式创建丢失路径的列表


Tags: 文件方法路径列表osprofiledatfile
3条回答

只需从所有结果中减去一组:

import os
path = 'path/to/directory'
listt = ['/data0/river_routes.nc',
         '/dat/rho0_profile.nc',...]
all = set(listt)
found = set(os.listdir(path))
missing = list(all - found)

试试这个:

from pathlib import Path

if __name__ == '__main__':
    paths = ['/data0/river_routes.nc',
             '/dat/rho0_profile.nc']
    missing = []
    for item in paths:
        p = Path(item)
        if not p.exists():
            missing.append(item)

您需要附加路径而不是bool返回的isfile

from os.path import isfile

paths = ['/data0/river_routes.nc', '/dat/rho0_profile.nc',...]

missing_paths = []
for path in paths:
    if not isfile(path):
        missing_paths.append(path)

也可以使用列表理解:

missing_paths = [path for path in paths if not isfile(path)]

或者可以使用itertools.filterfalse

from itertools import filterfalse as ffilter
missing_paths = list(filter(ispath, paths))

相关问题 更多 >