我遇到一个问题,无法创建与文件夹中的文件同名的文件夹
例如,如果图像包含名称
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'
我认为如果你使用windows,你需要使用
\
而不是/
例如:
file_path = "C:\\Users\\arter\\filename.ext"
或file_path = "C:\Users\arter\filename.ext"
相关问题 更多 >
编程相关推荐