为什么缩进的错误原因是错误的功能?
问题描述:
我不明白为什么会发生这种错误。 首先,我通过运行此代码写为什么缩进的错误原因是错误的功能?
import urllib.request
from bs4 import BeautifulSoup
import time
import os
def download_image(url,name):
path = "./scrape_image/"
imagename = str(name) + ".jpg"
if not os.path.exists(path):
os.makedirs(path)
print(path)
urllib.request.urlretrieve(url,path+imagename)
url = "https://api.XXXkeyword=YYY&limit=1000"
response = urllib.request.urlopen(url)
rss = response.read().decode("utf-8")
soup = BeautifulSoup(rss, "xml")
name=0
for s in soup.find_all("photo"):
url = s.find_all("image_url")[0].string
name+=1
download_image(url, name)
,我可以从API.But得到1个图像原本正确的代码可以从API.I获得1000张图像中的第一个代码缩进固定,所以我的代码就像
import urllib.request
from bs4 import BeautifulSoup
import time
import os
def download_image(url,name):
path = "./image/"
imagename = str(name) + ".jpg"
if not os.path.exists(path):
os.makedirs(path)
print(path)
urllib.request.urlretrieve(url, path+imagename)
time.sleep(1)
url = "https://api.XXXkeyword=YYY&limit=1000"
response = urllib.request.urlopen(url)
rss = response.read().decode("utf-8")
soup = BeautifulSoup(rss, "xml")
name = 0
for s in soup.find_all("photo"):
url = s.find_all("image_url")[0].string
name+=1
download_image(url,name)
最后,我可以从API获得1000个图像。但我不明白为什么我可以通过修改缩进来做到这一点。请给我一些解释。
答
因为在第一个例子,如果你的条件通过你只得到图像:
if not os.path.exists(path):
这情况只会通过一次因为你马上创建路径:
os.makedirs(path)
对于循环的每一次迭代,条件都是错误的。所以代码在之内的条件块不执行。
基本上,仅当条件为真时才会执行if
块。将if
块的代码移出时,无论条件如何,它都会始终执行。
因为它是Python ...? – dasdingonesin