Python - 变量未定义但我认为是
Python - variable not defined but I think it is
我正在从 Internet Archive 中提取图像作为一些 python 代码的测试,并且我正在合并请求模块。我的代码如下:(注意,不是全部代码,只是相关部分)
image_results = []
image_hashes = []
session = requests.Session()
for image in image_list:
if txtUrl not in image:
continue
try:
self.rslBox.AppendText("[v] Downloading %s" % image + "\n")
self.rslBox.Refresh()
response = session.get(image)
except:
self.rslBox.AppendText("[!] Failed to download: %s" % image + "\n")
self.rslBox.Refresh()
# continue
if "image" in response.headers['content-type']:
sha1 = hashlib.sha1(response.content).hexadigest()
if sha1 not in image_hashes:
image_hashes.append(sha1)
image_path = "WayBackImages/%s-%s" % (sha1.image.split("/")[-1])
with open(image_path, "wb") as fd:
fd.write(response.content)
self.rslBox.AppendText("[*] Saved %s" % images + "\n")
self.rslBox.Refresh()
info = pyexifinfo.get_json(image_path)
info[0]['ImageHash'] = sha1
image_results.append(info[0])
image_results_json = json.dumps(image_results)
data_frame = pandas.read_json(image_results_json)
csv = data_frame.to_csv('results.csv')
self.rslBox.AppendText("[*] Finished writing CSV to results.csv" + '\n')
self.rslBox.Refresh()
return
当我 运行 我的代码时,我收到以下消息:
Traceback (most recent call last):
File "C:\eclipse-workspace\test\tabbedPage.py", line 136, in OnSearch
if "image" in response.headers['content-type']:
NameError: name 'response' is not defined
但是响应是在 try 语句中定义的——我认为是这样。它只在 if "image" 部分抱怨 - 为什么?
我是 python 的新手,我在 Eclipse 中使用 python3.6 和 pydev。
谢谢!
这是因为您在 try 块中声明响应。如果抛出异常,则不会声明响应。
解决此问题的方法是将依赖于声明的响应的代码放入该 try 块中。
您尝试中的某些内容失败了。您的 except 捕获它处理错误,但由于其中没有加注,它继续执行,但未设置响应。
我正在从 Internet Archive 中提取图像作为一些 python 代码的测试,并且我正在合并请求模块。我的代码如下:(注意,不是全部代码,只是相关部分)
image_results = []
image_hashes = []
session = requests.Session()
for image in image_list:
if txtUrl not in image:
continue
try:
self.rslBox.AppendText("[v] Downloading %s" % image + "\n")
self.rslBox.Refresh()
response = session.get(image)
except:
self.rslBox.AppendText("[!] Failed to download: %s" % image + "\n")
self.rslBox.Refresh()
# continue
if "image" in response.headers['content-type']:
sha1 = hashlib.sha1(response.content).hexadigest()
if sha1 not in image_hashes:
image_hashes.append(sha1)
image_path = "WayBackImages/%s-%s" % (sha1.image.split("/")[-1])
with open(image_path, "wb") as fd:
fd.write(response.content)
self.rslBox.AppendText("[*] Saved %s" % images + "\n")
self.rslBox.Refresh()
info = pyexifinfo.get_json(image_path)
info[0]['ImageHash'] = sha1
image_results.append(info[0])
image_results_json = json.dumps(image_results)
data_frame = pandas.read_json(image_results_json)
csv = data_frame.to_csv('results.csv')
self.rslBox.AppendText("[*] Finished writing CSV to results.csv" + '\n')
self.rslBox.Refresh()
return
当我 运行 我的代码时,我收到以下消息:
Traceback (most recent call last):
File "C:\eclipse-workspace\test\tabbedPage.py", line 136, in OnSearch
if "image" in response.headers['content-type']:
NameError: name 'response' is not defined
但是响应是在 try 语句中定义的——我认为是这样。它只在 if "image" 部分抱怨 - 为什么?
我是 python 的新手,我在 Eclipse 中使用 python3.6 和 pydev。 谢谢!
这是因为您在 try 块中声明响应。如果抛出异常,则不会声明响应。
解决此问题的方法是将依赖于声明的响应的代码放入该 try 块中。
您尝试中的某些内容失败了。您的 except 捕获它处理错误,但由于其中没有加注,它继续执行,但未设置响应。