繁体   English   中英

根据 Python 中另一个列表中的对象查找一个列表中的对象

[英]Find objects in one list based on objects in another list in Python

如何根据另一个列表中的对象在一个列表中查找对象?

在这里,我有一个包含多个站点的 .txt 文件,我可以从中按名称下载必要的文件。

如果我需要单个文件或某些特定文件,我可以通过选择所需文件直接下载它,但我拥有的是与下载站点的最后一个字符匹配的单独文件列表

必要文件列表:

print(lis)
 Out[96]: ['folder1_file_1', 'folder1_file_2', 'folder1_file_3', 'folder2_file_3']

包含需要下载的站点的 txt 文件: 在此处输入图像描述

如何在.txt文件中找到这四个文件并下载?

['folder1_file_1', 'folder1_file_2', 'folder1_file_3', 'folder2_file_3']

这是我到目前为止所拥有的:

lis = ['folder1_file_1', 'folder1_file_2', 'folder1_file_3', 'folder2_file_3']


site = 'W:\storage_public_sites_all.txt'
with open(site) as f:
    urllist = f.readlines()
urllist = [x.strip() for x in urllist]

for n in urllist:
    b = [item for item in n if item.__contains__(lis)]

    # HOW TO FIND CORRESPODNING FILES BY NAMES IN LIS

    dest_folder = r'W:\download'

@ljdyer 的工作解决方案:

lis = ['folder1_file_1', 'folder1_file_2', 'folder1_file_3', 'folder2_file_3']
destination = r'W:\download'

site = 'W:\storage_public_sites_all.txt'
with open(site) as f:
    urllist = f.readlines()
urllist = [x.strip() for x in urllist]

files = [file for file in urllist for url in lis if url in file]
for file in files:
    print(file)
    import wget
    wget.download(file, out=destination)

您可以在单个列表理解中从 URL 列表中获取所有 txt 文件:

files = [file for file in files for url in urllist if url in file]

然后你可以遍历你的 .jpg 文件名列表来下载文件:

for file in files:
    ...

尝试:

from urllib.parse import urlparse
from pathlib import Path

lis = ['folder1_file_1', 'folder1_file_2', 'folder1_file_3', 'folder2_file_3']

site = r'W:\storage_public_sites_all.txt'
with open(site) as f:
    urldict = {Path(urlparse(line).path).stem: line.strip() for line in f}

for file in lis:
    print(f"{file}: {urldict[file]}")
    # do stuff here

Output:

folder1_file_1: https://storage.public.eu/opendata/files/folder1/folder1_file_1.jpg
folder1_file_2: https://storage.public.eu/opendata/files/folder1/folder1_file_2.jpg
folder1_file_3: https://storage.public.eu/opendata/files/folder1/folder1_file_3.jpg
folder2_file_3: https://storage.public.eu/opendata/files/folder2/folder2_file_3.jpg

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM