python - 检查 zip 中的对是否正确?

标签 python list

我需要你对这个问题的建议。

我已经在这两个列表中收集了我需要的内容:simpl2astik,代码如下:

simpl2 = [] 
astik = []
for path, subdirs, files in os.walk(rootfolder):
    for name in files:
        if 'sim2.shp' == name:
            simpl2.append(os.path.join(path, name))
        elif 'ASTIK.shp' == name:
            astik.append(os.path.join(path, name))

上面的代码在包含文件夹的根文件夹中搜索:v1.v2,v3,v4
所以使用这个:

for i,j in zip(simpl2,astik): 
    print(i,j)

给出了这个:

内容

C:\Users\user\Desktop\pl\v1\exported\sim2.shp C:\Users\user\Desktop\pl\v1\ASTIK\ASTIK.shp
C:\Users\user\Desktop\pl\v2\exported\sim2.shp C:\Users\user\Desktop\pl\v4\ASTIK\ASTIK.shp

问题

如何确保这些对来自同一文件夹(例如第一行都来自 v1 ,如果不是(例如第二行来自 v2 v4 中的另一个)使它们根本没有一对。

这应该发生,因为它们稍后将被使用,并且它们必须是正确的对,否则我已经准备好了代码,但对于那些没有配对的代码除外,所以问题是如何修复所描述的这部分早些时候。

说明

根文件夹是:

C:\Users\user\Desktop\pl

pl之后有一个v1、v2、v3、v4文件夹。每个文件夹都有一些与所有 4 个文件夹相同的文件。唯一的区别是有些是空的。我只想检查列表中是否创建了正确的相同 v 对。

最佳答案

好的,看到您的更新,也许您对类似这样的内容感兴趣:

import os

simpl2 = []
astik = []

rootfolder = r'C:\Users\user\Desktop\pl'
subfolders = [os.path.join(rootfolder, i) for i in ['v1','v2','v3','v4']]

for folder in subfolders:

    temp = {name: os.path.join(path, name) 
            for path, subdirs, files in os.walk(folder)
            for name in files
            if name in ['sim2.shp', 'ASTIK.shp']}

    if len(temp) == 2:
        simpl2.append(temp['sim2.shp'])
        astik.append(temp['ASTIK.shp'])
<小时/>

旧代码

但是...如果这是您的最终目标,您也可以只存储路径。如果两个文件都在路径中,那么您就知道该路径包含这两个文件。然后,您可以在需要时使用 os.path.join() 轻松构建结束路径。

paths = []
for path, subdirs, files in os.walk(rootfolder):
    if ('sim2.shp' in files) and ('ASTIK.shp' in files):
        paths.append(path)

或更紧凑的格式:

lookfor = ['sim2.shp','ASTIK.shp']
paths = [p for p,s,f in os.walk(rootfolder) if all(i in f for i in lookfor)]

关于python - 检查 zip 中的对是否正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52183039/

相关文章:

Python 分组显示列

python - 使用字典计算 python 数据框中的词频

python - 如何从特定项目的输入中打印列表

python - 通过Python中的元素总和查找列表列表的最大值

javascript - 如何在PhoneGap中添加点击事件到动态 ListView ?

python - 对字符串列表执行算术运算

python - 尝试从 C 调用 Python 函数时出现段错误

python - 如果语句检查列表包含在不应该返回 true 时返回 true

list - 如何从haskell中的元组列表中获取特定值?

c# - 使用 LINQ 的唯一项目列表