从另一个列表中读取路径后,创建丢失文件的列表

时间:2019-07-02 12:42:18

标签: python list

我有一个文件路径列表listt

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

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

我可以使用以下方法创建充满list1的{​​{1}}:

True/False

但是我不确定如何以最有效的方式创建缺少路径的列表

4 个答案:

答案 0 :(得分:2)

尝试这个:

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)

答案 1 :(得分:2)

您需要附加路径,而不是select i.* from b_im_relation i inner join ( select chat_id from b_im_relation group by chat_id having count(distinct user_id) = 2 and sum(user_id not in(3, 4)) = 0 ) t on t.chat_id = i.chat_id 返回的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

答案 2 :(得分:1)

您可以使用列表理解

import os

not_exists = [f for f in list1 if not os.path.exists(f)]

其中list1是具有路径的列表

答案 3 :(得分:1)

只需从所有结果中减去一组即可找到

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)