![](/img/trans.png)
[英]Python - Create a list of objects based on counts of another list of objects
[英]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文件中找到这四个文件并下载?
['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.