我有一个文件路径列表listt
:
['/data0/river_routes.nc',
'/dat/rho0_profile.nc',...]
我要检查它们是否存在,如果不存在,请创建一个列表list1
,其中仅包含丢失文件的路径。
我可以使用以下方法创建充满list1
的{{1}}:
True/False
但是我不确定如何以最有效的方式创建缺少路径的列表
答案 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)