正在从url FileNotFoundError下载图像:[Errno 2]没有此类文件或目录:

2024-06-09 16:26:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我遇到一个问题,无法创建与文件夹中的文件同名的文件夹

例如,如果图像包含名称

apple-banana-carrot-dog-electric-fish-gorilla-horse-igloo-jackrabbit-kangaroo-long-maze-nickel-octopus-pretty.jpg

我将得到错误:(为了可读性,我分隔了目录路径)

FileNotFoundError: [Errno 2] No such file or directory: 'C:/Users/Dave/Desktop/PictureGallery/

apple-banana-carrot-dog-electric-fish-gorilla-horse-igloo-jackrabbit-kangaroo-long-maze-nickel-octopus-pretty/

apple-banana-carrot-dog-electric-fish-gorilla-horse-igloo-jackrabbit-kangaroo-long-maze-nickel-octopus-pretty.-1.jpg'

但是,如果我使用该文件夹名称的一半,例如

apple-banana-carrot-dog-electric-fish-gorilla-horse

我不会出错的。我完全不知道为什么会这样

下载图像:

import os

import requests


def download(url: str, dest_folder: str):
    print("DESTINATION FOLDER: " + dest_folder)
    if not os.path.exists(dest_folder):
        os.makedirs(dest_folder)

    filename = url.split('/')[-1].replace(" ", "_")  # be careful with file names
    file_path = os.path.join(dest_folder, filename)
    print("File path: " + file_path)

    r = requests.get(url, stream=True)
    if r.ok:
        with open(file_path, 'wb') as f:
            for chunk in r.iter_content(chunk_size=1024 * 8):
                if chunk:
                    f.write(chunk)
                    f.flush()
                    os.fsync(f.fileno())
    else:  # HTTP status code 4XX/5XX
        print("Download failed: status code {}\n{}".format(r.status_code, r.text))

和main.py:

import requests
import os
from bs4 import BeautifulSoup

from downloader import download

url = 'https://urltoimage.com/123456/apple-banana-carrot-dog-electric-fish-gorilla-horse-igloo-jackrabbit-kangaroo-long-maze-nickel-octopus-pretty/'
model_name = 'Coolname'

album_name = ' '.join(url.split("/")).split()[-1] #apple-banana-carrot-dog-electric-fish-gorilla-horse-igloo-jackrabbit-kangaroo-long-maze-nickel-octopus-pretty
print("Album name: " + album_name)
location = "C:/Users/Dave/Desktop/" + model_name + "/" + album_name + "/"

print('Location: ' + location) #C:/Users/Dave/Desktop/Coolname/apple-banana-carrot-dog-electric-fish-gorilla-horse-igloo-jackrabbit-kangaroo-long-maze-nickel-octopus-pretty/

reqs = requests.get(url)
soup = BeautifulSoup(reqs.text, 'html.parser')

for link in soup.find_all('img'):
    if album_name in link.get('src').lower():
        print(link.get('src'))
        download(link.get('src'), location)

对于my main.py中的行:

location = "C:/Users/Dave/Desktop/" + model_name + "/" + album_name + "/" 相册名称通常会从url中提取,因此

apple-banana-carrot-dog-electric-fish-gorilla-horse-igloo-jackrabbit-kangaroo-long-maze-nickel-octopus-pretty

这会导致抛出错误

但是当我把它换成其他东西的时候

比如

location = "C:/Users/Dave/Desktop/" + model_name + "/" + "anything5"+ "/"

location = "C:/Users/Dave/Desktop/" + model_name + "/" + "apple-banana-carrot-dog-electric-fish-gorilla-horse"+ "/"

下载将不会抛出任何错误。我不知道是什么导致了这个问题

downloader.py中的line 18处抛出错误

with open(file_path, 'wb') as f:

完全错误:

    with open(file_path, 'wb') as f:
FileNotFoundError: [Errno 2] No such file or directory: 'C:/Users/Dave/Desktop/Coolname/apple-banana-carrot-dog-electric-fish-gorilla-horse-igloo-jackrabbit-kangaroo-long-maze-nickel-octopus-pretty/apple-banana-carrot-dog-electric-fish-gorilla-horse-igloo-jackrabbit-kangaroo-long-maze-nickel-octopus-pretty.-1.jpg'

Tags: nameapplelongkangaroobananadogfishmaze