我是個新手,為了學爬蟲我看了好幾個大佬的文章。學到了try……except。
我以為這是一個用來反饋錯誤的函式。但我在使用中發現time.sleep()也可以停止try里面的代碼然后轉到去運行except里面的代碼。
好像try下面的代碼運行到time.sleep(時就會被認為是報錯。然后呼叫except下面的代碼。或者應該說,只要try里面的代碼停止運行時就會停止后續代碼,開始運行except里面的代碼。
不知道我這個理解對不對。
----------
這是一個爬蟲程式的一部分
這兩個加了星標的time.sleep(1)
第一個會導致不停的提示[英雄名]檔案夾已創建,但不會影響程式運行。
第二個會導致程式在列印一個服務器狀態碼之后再列印程式運行時發生錯誤然后停止運行。
-----------
i = 0
#試著創建檔案夾如果報錯則提示
try:
try:
os.mkdir("F:\\王者測驗")
except:
print('檔案夾王者測驗已存在')
#把變數J在heronumber里回圈一遍
for j in heronumber:
try:
os.mkdir("F:\\王者測驗\\"+ heroname[i])
一號星標* time.sleep(1)
except:
print('檔案夾'+ str(heroname[i]) +'已存在')
os.chdir("F:\\王者測驗\\"+ heroname[i])
i += 1
for k in range(10):#k回圈十次來下載所有皮膚
onehero_link = 'http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/' + str(j) + '/' + str(j) + '-bigskin-' + str(k) + '.jpg'
im = requests.get(onehero_link)
try:
if im.status_code == 200:
open(str(k)+'jpg','wb').write(im.content)
print(str(im.status_code))
二號星標* time.sleep(1)
except:
print('服務器反饋代碼'+ str(im.status_code))
except:
print('程式運行時發生錯誤')
uj5u.com熱心網友回復:
第一個星標time.sleep在一個try里面,出錯就執行except,不會停下,回圈一次,就提示一次,直到回圈結束,沒問題啊第二個星標time.sleep在在另一個try里面,出錯就執行except,也沒問題啊。
你到底想問什么啊
錯的不是time,而是
os.mkdir("F:\\王者測驗")
和
open(str(k)+'jpg','wb').write(im.content)(這個錯誤是我猜的)
你重新組織一下你的語言吧
uj5u.com熱心網友回復:
樓主,你對例外處理有誤解哈!從你的代碼中可以看到,你這創建檔案夾根本不需要進行例外處理!
給你一個代碼片段,希望能夠幫助到你!
import os
basedir = "F:\\王者測驗"
if not os.path.exists(basedir):
os.mkdir(basedir)
如果想創建多層檔案夾,則可以依葫蘆畫瓢,改用
os.makedirs() 函式即可
uj5u.com熱心網友回復:
謝謝我再看看
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/11724.html
上一篇:python,基礎問題,求助
下一篇:python實作K折交叉驗證問題
