python錯誤小結,Python錯誤處理

本文目錄一覽:

python中set的用法小結

python提供了常用的數據結構,其中之一就是set,python中的set是不支持索引的、值不能重複、無需插入的容器。

簡單記錄下set常用的操作函數:

1.新建一個set:

set(“Hello”),這樣會轉成單個字符的值進行插入,結果是’H’,’e’,’l’,’o’,’l’因為重複只能插入一次。

2.增加一個元素:

add()用於增加一個元素值,

update([]),用於增加多個元素值,參數為list,注意如果用add增加多個值,會報參數類型錯誤。

3.刪除一個元素:

remove()用於刪除一個set中的元素,這個值在set中必須存在,如果不存在的話,會引發KeyError錯誤。

discard()用於刪除一個set中的元素,這個值不必一定存在,不存在的情況下刪除也不會觸發錯誤。

4.隨機刪除函數:

set提供了一個pop()函數,這個函數隨機返回一個元素值,然後把這個值刪除,如果set為空,調用這個函數會返回Key錯誤。

5.清空函數:

clear(),將set全部清空。

6.測試單個元素在集合內是否存在:

in 或者 not in 如果需要判斷一個值在集合內是否存在,in就能滿足要求,例如2 in set_num 如果存在則返回True,否則返回False。

7.測試兩個集合是否包含,子集操作:

issubset和issuperset,

s1.issubset(s2)  :測試是否 s1 中的每一個元素都在 s2 中,運算符操作為 s1=s2;

s2.issuperset(s1)  :測試是否 s1 中的每一個元素都在 s2 中,運算符操作為 s1=s2;//注意是s2調用,參數為s1.

8.集合的並集:

union s1.union(s2)  :返回一個新集合,新集合包含s1,s2的所有元素,等價的運算符為 | 。

9.集合的交集:

intersection,s1.intersection(s2),返回s1和s2中相同部分

10.其他操作:

s1.difference(s2):包含s1中有,但是s2沒有的元素的集合。

s1symmetric_difference(s2):包含s1和s2中不相同的元素的集合。

以上只是一部分操作的描述,如果有錯誤,敬請指正。

Python中的幾種特殊數據類型小結

下面介紹了Python中的6種特殊數據類型:

1.list:列表

是一種有序的數據集合,在列表數據結構中的類型並不唯一

定義形式:L=[‘Micha’,100,True]

輸出整個列表的時候顯示為[‘Micha’,100,True]

輸出單個的數值則為:Micha

a.訪問,直接使用L[0]表示第一個元素或者使用L[-1]表示最後一個數據,以此類推,但是注意訪問不能越界(訪問的序號不能超過元素的總數)。

b.添加新元素:使用L.append(100)直接將100加入列表末尾,或者使用L.insert(0,’paul’)將paul插入任意位置。

c.刪除元素:L.pop()刪除最後一個元素,或者L.pop(2)刪除第2個位置的元素。

d.替換元素:直接賦值就可以了L[2]=100

2.tuple:元組

是一種有序的列表,但是其一旦創立完畢就不能夠更改,即不能插入,刪除裡面的元素,訪問的方式跟List結構一致。

a.t=()其打印後輸出的形式是()

若t中的數據為一個數字則需要在後面加逗號,以區分普通數字,如t=(1,),打印出(1,)而非1,多元素的話則沒有這個要求。

b.可以在不變的tuple中加入可變的List如t=(‘a’,’b’,[‘A’,’B’])

3.dict:字典

d = {

‘Adam’: 95,

‘Lisa’: 85,

‘Bart’: 59

}

len()函數可以計算任意集合的大小

其中可以簡單地使用d[key]的形式來查找對應的 value,這和 list很像,不同之處是,list必須使用索引返回對應的元素,而dict使用key,當key不存在的時候,使用該key可能出現錯誤,因此:要避免 KeyError 發生,有兩個辦法:

一是先判斷一下 key 是否存在,用 in 操作符:

if’Paul’ in d:

print d[‘Paul’]

如果 ‘Paul’ 不存在,if語句判斷為False,自然不會執行print d[‘Paul’],從而避免了錯誤。

二是使用dict本身提供的一個 get方法,在Key不存在的時候,返回None:

print d.get(‘Bart’)

59

a.dict中的key不能重複,且dict中的存儲的對應值沒有順序,打印出的東西可能是無序的

b.dict的更新:使用d[‘paul’]=72求解

c.dict遍歷:

d = {‘Adam’: 95, ‘Lisa’: 85, ‘Bart’: 59 }

for key in d:

…     print key

遍歷只能獲得key的值,需要通過key值獲得對應的value

4.set:集合

無序但是所有元素唯一,不重複

a.定義:s = set([‘A’, ‘B’, ‘C’]),查看 set的內容:

print s

set([‘A’,’C’, ‘B’])

可以用in來判斷是否存在於集合中

b.遍歷

s =set([(‘Adam’, 95), (‘Lisa’, 85), (‘Bart’, 59)])

for xin s:

print x[0]+’:’,x[1]

c.添加元素到集合中

s.add(4)

d.刪除元素

s.remove(4)若該元素不在集合中將會報錯

5.Unicode編碼

Python在後來添加了對Unicode的支持,以Unicode表示的字符串用u’…’表示,比如:

printu’中文’

注意: 不加 u,中文就不能正常顯示中文。

a.轉義形式: u’中文\n日文\n韓文’

b.輸出多行:

u”’第一行

第二行”’

c.raw+多行的形式:

ur”’Python的Unicode字符串支持”中文”,

“日文”,

“韓文”等多種語言”’

如果中文字符串在Python環境下遇到 UnicodeDecodeError,這是因為.py文件保存的格式有問題。可以在第一行添加註釋

# -*-coding: utf-8 -*-

目的是告訴Python解釋器,用UTF-8編碼讀取源代碼。然後用Notepad++另存為, 並選擇UTF-8格式保存。

6.raw的作用

如果一個字符串包含很多需要轉義的字符,對每一個字符都進行轉義會很麻煩。為了避免這種情況,我們可以在字符串前面加個前綴 r,表示這是一個“raw”字符串,裡面的字符就不需要轉義了。例如:

r’\(~_~)//’

但是r’…’表示法不能表示多行字符串,也不能表示包含’和 “的字符串,如果要表示多行字符串。

我執行一段python腳本報錯了,怎麼解決

在程序運行的過程中,如果發生了錯誤,可以事先約定返回一個錯誤代碼,這樣,就可以知道是否有錯,以及出錯的原因。在操作系統提供的調用中,返回錯誤碼非常常見。比如打開文件的函數open(),成功時返迴文件描述符(就是一個整數),出錯時返回-1。

用錯誤碼來表示是否出錯十分不便,因為函數本身應該返回的正常結果和錯誤碼混在一起,造成調用者必須用大量的代碼來判斷是否出錯:

複製代碼代碼如下:

def foo():

r = some_function()

if r==(-1):

return (-1)

# do something

return r

def bar():

r = foo()

if r==(-1):

print ‘Error’

else:

pass

一旦出錯,還要一級一級上報,直到某個函數可以處理該錯誤(比如,給用戶輸出一個錯誤信息)。

所以高級語言通常都內置了一套try…except…finally…的錯誤處理機制,Python也不例外。

try

讓我們用一個例子來看看try的機制:

複製代碼代碼如下:

try:

print ‘try…’

r = 10 / 0

print ‘result:’, r

except ZeroDivisionError, e:

print ‘except:’, e

finally:

print ‘finally…’

print ‘END’

當我們認為某些代碼可能會出錯時,就可以用try來運行這段代碼,如果執行出錯,則後續代碼不會繼續執行,而是直接跳轉至錯誤處理代碼,即except語句塊,執行完except後,如果有finally語句塊,則執行finally語句塊,至此,執行完畢。

上面的代碼在計算10 / 0時會產生一個除法運算錯誤:

複製代碼代碼如下:

try…

except: integer division or modulo by zero

finally…

END

從輸出可以看到,當錯誤發生時,後續語句print ‘result:’, r不會被執行,except由於捕獲到ZeroDivisionError,因此被執行。最後,finally語句被執行。然後,程序繼續按照流程往下走。

如果把除數0改成2,則執行結果如下:

複製代碼代碼如下:

try…

result: 5

finally…

END

由於沒有錯誤發生,所以except語句塊不會被執行,但是finally如果有,則一定會被執行(可以沒有finally語句)。

你還可以猜測,錯誤應該有很多種類,如果發生了不同類型的錯誤,應該由不同的except語句塊處理。沒錯,可以有多個except來捕獲不同類型的錯誤:

複製代碼代碼如下:

try:

print ‘try…’

r = 10 / int(‘a’)

print ‘result:’, r

except ValueError, e:

print ‘ValueError:’, e

except ZeroDivisionError, e:

print ‘ZeroDivisionError:’, e

finally:

print ‘finally…’

print ‘END’

int()函數可能會拋出ValueError,所以我們用一個except捕獲ValueError,用另一個except捕獲ZeroDivisionError。

此外,如果沒有錯誤發生,可以在except語句塊後面加一個else,當沒有錯誤發生時,會自動執行else語句:

複製代碼代碼如下:

try:

print ‘try…’

r = 10 / int(‘a’)

print ‘result:’, r

except ValueError, e:

print ‘ValueError:’, e

except ZeroDivisionError, e:

print ‘ZeroDivisionError:’, e

else:

print ‘no error!’

finally:

print ‘finally…’

print ‘END’

Python的錯誤其實也是class,所有的錯誤類型都繼承自BaseException,所以在使用except時需要注意的是,它不但捕獲該類型的錯誤,還把其子類也“一網打盡”。比如:

複製代碼代碼如下:

try:

foo()

except StandardError, e:

print ‘StandardError’

except ValueError, e:

print ‘ValueError’

第二個except永遠也捕獲不到ValueError,因為ValueError是StandardError的子類,如果有,也被第一個except給捕獲了。

Python所有的錯誤都是從BaseException類派生的

使用try…except捕獲錯誤還有一個巨大的好處,就是可以跨越多層調用,比如函數main()調用foo(),foo()調用bar(),結果bar()出錯了,這時,只要main()捕獲到了,就可以處理:

複製代碼代碼如下:

def foo(s):

return 10 / int(s)

def bar(s):

return foo(s) * 2

def main():

try:

bar(‘0’)

except StandardError, e:

print ‘Error!’

finally:

print ‘finally…’

也就是說,不需要在每個可能出錯的地方去捕獲錯誤,只要在合適的層次去捕獲錯誤就可以了。這樣一來,就大大減少了寫try…except…finally的麻煩。

調用堆棧

如果錯誤沒有被捕獲,它就會一直往上拋,最後被Python解釋器捕獲,打印一個錯誤信息,然後程序退出。來看看err.py:

複製代碼代碼如下:

# err.py:

def foo(s):

return 10 / int(s)

def bar(s):

return foo(s) * 2

def main():

bar(‘0’)

main()

執行,結果如下:

複製代碼代碼如下:

$ python err.py

Traceback (most recent call last):

File “err.py”, line 11, in module

main()

File “err.py”, line 9, in main

bar(‘0’)

File “err.py”, line 6, in bar

return foo(s) * 2

File “err.py”, line 3, in foo

return 10 / int(s)

ZeroDivisionError: integer division or modulo by zero

出錯並不可怕,可怕的是不知道哪裡出錯了。解讀錯誤信息是定位錯誤的關鍵。我們從上往下可以看到整個錯誤的調用函數鏈:

錯誤信息第1行:

複製代碼代碼如下:

Traceback (most recent call last):

告訴我們這是錯誤的跟蹤信息。

第2行:

複製代碼代碼如下:

File “err.py”, line 11, in module

main()

調用main()出錯了,在代碼文件err.py的第11行代碼,但原因是第9行:

複製代碼代碼如下:

File “err.py”, line 9, in main

bar(‘0’)

調用bar(‘0’)出錯了,在代碼文件err.py的第9行代碼,但原因是第6行:

複製代碼代碼如下:

File “err.py”, line 6, in bar

return foo(s) * 2

原因是return foo(s) * 2這個語句出錯了,但這還不是最終原因,繼續往下看:

複製代碼代碼如下:

File “err.py”, line 3, in foo

return 10 / int(s)

原因是return 10 / int(s)這個語句出錯了,這是錯誤產生的源頭,因為下面打印了:

複製代碼代碼如下:

ZeroDivisionError: integer division or modulo by zero

根據錯誤類型ZeroDivisionError,我們判斷,int(s)本身並沒有出錯,但是int(s)返回0,在計算10 / 0時出錯,至此,找到錯誤源頭。

記錄錯誤

如果不捕獲錯誤,自然可以讓Python解釋器來打印出錯誤堆棧,但程序也被結束了。既然我們能捕獲錯誤,就可以把錯誤堆棧打印出來,然後分析錯誤原因,同時,讓程序繼續執行下去。

Python內置的logging模塊可以非常容易地記錄錯誤信息:

複製代碼代碼如下:

# err.py

import logging

def foo(s):

return 10 / int(s)

def bar(s):

return foo(s) * 2

def main():

try:

bar(‘0’)

except StandardError, e:

logging.exception(e)

main()

print ‘END’

同樣是出錯,但程序打印完錯誤信息後會繼續執行,並正常退出:

複製代碼代碼如下:

$ python err.py

ERROR:root:integer division or modulo by zero

Traceback (most recent call last):

File “err.py”, line 12, in main

bar(‘0’)

File “err.py”, line 8, in bar

return foo(s) * 2

File “err.py”, line 5, in foo

return 10 / int(s)

ZeroDivisionError: integer division or modulo by zero

END

通過配置,logging還可以把錯誤記錄到日誌文件里,方便事後排查。

拋出錯誤

因為錯誤是class,捕獲一個錯誤就是捕獲到該class的一個實例。因此,錯誤並不是憑空產生的,而是有意創建並拋出的。Python的內置函數會拋出很多類型的錯誤,我們自己編寫的函數也可以拋出錯誤。

如果要拋出錯誤,首先根據需要,可以定義一個錯誤的class,選擇好繼承關係,然後,用raise語句拋出一個錯誤的實例:

複製代碼代碼如下:

# err.py

class FooError(StandardError):

pass

def foo(s):

n = int(s)

if n==0:

raise FooError(‘invalid value: %s’ % s)

return 10 / n

執行,可以最後跟蹤到我們自己定義的錯誤:

複製代碼代碼如下:

$ python err.py

Traceback (most recent call last):

__main__.FooError: invalid value: 0

只有在必要的時候才定義我們自己的錯誤類型。如果可以選擇Python已有的內置的錯誤類型(比如ValueError,TypeError),盡量使用Python內置的錯誤類型。

最後,我們來看另一種錯誤處理的方式:

複製代碼代碼如下:

# err.py

def foo(s):

n = int(s)

return 10 / n

def bar(s):

try:

return foo(s) * 2

except StandardError, e:

print ‘Error!’

raise

def main():

bar(‘0’)

main()

在bar()函數中,我們明明已經捕獲了錯誤,但是,打印一個Error!後,又把錯誤通過raise語句拋出去了,這不有病么?

其實這種錯誤處理方式不但沒病,而且相當常見。捕獲錯誤目的只是記錄一下,便於後續追蹤。但是,由於當前函數不知道應該怎麼處理該錯誤,所以,最恰當的方式是繼續往上拋,讓頂層調用者去處理。

raise語句如果不帶參數,就會把當前錯誤原樣拋出。此外,在except中raise一個Error,還可以把一種類型的錯誤轉化成另一種類型:

複製代碼代碼如下:

try:

10 / 0

except ZeroDivisionError:

raise ValueError(‘input error!’)

只要是合理的轉換邏輯就可以,但是,決不應該把一個IOError轉換成毫不相干的ValueError。

小結

Python內置的try…except…finally用來處理錯誤十分方便。出錯時,會分析錯誤信息並定位錯誤發生的代碼位置才是最關鍵的。

程序也可以主動拋出錯誤,讓調用者來處理相應的錯誤。但是,應該在文檔中寫清楚可能會拋出哪些錯誤,以及錯誤產生的原因。

Python淺薄的基礎小結上

Python 支持四種不同的數值類型:

整型(Int) – 通常被稱為是整型或整數,是正或負整數,不帶小數點。

長整型(long integers) – 無限大小的整數,整數最後是一個大寫或小寫的L。

浮點型(floating point real values) – 浮點型由整數部分與小數部分組成,浮點型也可以使用科學計數法表示(2.5e2 = 2.5 x 102= 250)

複數(complex numbers) – 複數由實數部分和虛數部分構成,可以用a + bj,或者complex(a,b)表示, 複數的實部a和虛部b都是浮點型。

在Phton中常見的運算加、減、乘、除、求余、冪指數等,同現實生活中的遵循一樣的優先級。即,乘除運算高於加減運算。例:

Python內置複數的計算支持所有常見複數的計算,對複數處理的數學函數在模塊cmath中:

字符串或串(String)是由數字、字母、下劃線組成的一串字符。Python字符串最大的特點是 不可修改, 只能生成新的字符串,用 雙引號或單引號 都可以表示字符串,多行字符串用三個連續單引號表示,特殊字符用轉義符 “\” 表示如: 製表符”\t”,換行符”\n”

str=’Hello World!’

print  str*2   # 輸出字符串兩次

Hello World!Hello World!

print  str+”TEST”   # 輸出連接的字符串

Hello World!TEST

len(‘str’)   #輸出字符串的長度

12

python的 字串列表 有2種取值順序:

從左到右索引默認0開始的,最大範圍是字符串長度少1

從右到左索引默認-1開始的,最大範圍是字符串開頭

如果你要實現從字符串中獲取一段子字符串的話,可以使用變量 [頭下標:尾下標] ,就可以截取相應的字符串,其中下標是從 0 開始算起,可以是正數或負數,下標可以為空表示取到頭或尾。比如:

s = ‘ilovepython’

s[1:5] 的結果是 love。

當使用以冒號分隔的字符串,python返回一個新的對象,結果包含了以這對偏移標識的連續的內容,左邊的開始是包含了下邊界。

上面的結果包含了s[1]的值l,而取到的最大範圍不包括上邊界,就是s[5]的值p。

‘abcd'[3:1:-1]  #從右到左

‘dc’

一些高級操作:

s=’You are my sunshine’

s.split(‘ ‘)

[‘You’ ,’are’, ‘my’ ,’sunshine’]

t=[‘one’,’for’,’two’]

‘ ‘.join(t)

‘one for two’

t=’Mike and Tom’

t.replace(‘Tom’,’jane’)

‘Mike and jane’

python變量的概念和初中代數的方程變量一致,變量就像貼在東西上的標籤,命名規則:大小寫英文、數字和下劃線,且不能用數字開頭,變量可以反覆賦值,而且可以是不同類型的變量

序列是Python中最基本的數據結構。序列中的每個元素都分配一個數字 – 它的位置,或索引,第一個索引是0,第二個索引是1,依此類推。

Python有6個序列的內置類型,但最常見的是列表和元組。

序列都可以進行的操作包括索引,切片,加,乘,檢查成員。

此外,Python已經內置確定序列的長度以及確定最大和最小的元素的方法。

列表 是最常用的Python數據類型,它可以作為一個方括號內的逗號分隔值出現。

列表的數據項不需要具有相同的類型

創建一個列表,只要把逗號分隔的不同的數據項使用方括號括起來即可。

[]  #創建空的列表

[]

list() #創建空的列表

[]

alist=[‘physics’,’chemistry’,1997,2000]

[‘physics’,’chemistry’,1997,2000]

List(列表) 是 Python 中使用最頻繁的數據類型。

列表可以完成大多數集合類的數據結構實現。它支持字符,數字,字符串甚至可以包含列表(即嵌套)。

列表用[ ]標識,是 python 最通用的複合數據類型。

列表中值的切割也可以用到變量[頭下標:尾下標],就可以截取相應的列表,從左到右索引默認 0 開始,從右到左索引默認 -1 開始,下標可以為空表示取到頭或尾。

list=[‘runoob’, 786, 2.23, ‘john’, 70.2]

tinylist=[123, ‘john’]

print list  # 輸出完整列表

[‘runoob’, 786, 2.23, ‘john’, 70.2]

‘runoob’ in alist  #某個元素是否存在

True

print list[0]   # 輸出列表的第一個元素

runoob

print list[1:3]   # 輸出第二個至第三個元素

[786,2.23]

print list[2:]   # 輸出從第三個開始至列表末尾的所有元素

[2.23,’john’,70.2]

print tinylist*2   # 輸出列表兩次

[123,’john’,123,’john’]

print list+tinylist   # 打印組合的列表

[‘runoob’,786,2.23,’john’,70.2,123,’john’]

Python的元組 與列表類似,不同之處在於元組的元素不能修改。

元組使用小括號,列表使用方括號。

元組創建很簡單,只需要在括號中添加元素,並使用逗號隔開即可。

()  #創建空的元組

()

tuple()  #創建空的元組

()

元組中只包含一個元素時,需要在元素後面添加逗號如:tup1=(50,);

tup=(1,True,0.234,”holle”)

同列表相似 元組 適用:

+ :鏈接兩個元組

* :複製n次,生成新的元組

in :某個元素是否存在

[start:end:step] :切片

值得注意的是元組是不可以更新的( 不可變) 序列,但我們可以對元組進行連接組合生成新的元組如:

tup1=(12,34.56)

tup2=(‘abc’,’xyz’)

tup3= tup1+tup2

print tup3

(12,34.56,’abc’,’xyz’)

任意無符號的對象,以逗號隔開,默認為元組。

字典是另一種可變容器模型,且可存儲任意類型對象。

字典的每個鍵值(key=value)對用冒號( : )分割,每個對之間用逗號( , )分割,整個字典包括在花括號( {}) 中 ,格式如下所示:

d= {key1:value1,key2:value2}

鍵必須是唯一的,但值則不必。

值可以取任何數據類型,但鍵必須是不可變的,如字符串,數字或元組。

字典是可變類型,可以添加,刪除,替換

requests模塊錯誤總結

1.url中有端口號導致了以下的錯誤

C:\Users\lenovo\AppData\Local\Programs\Python\Python37\python.exe D:/Pycharm/lemon/task_0525.py

Traceback (most recent call last):

  File “C:\Users\lenovo\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\connectionpool.py”, line 603, in urlopen

    chunked=chunked)

  File “C:\Users\lenovo\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\connectionpool.py”, line 387, in _make_request

    six.raise_from(e, None)

  File “string”, line 2, in raise_from

  File “C:\Users\lenovo\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\connectionpool.py”, line 383, in _make_request

    httplib_response = conn.getresponse()

  File “C:\Users\lenovo\AppData\Local\Programs\Python\Python37\lib\http\client.py”, line 1321, in getresponse

    response.begin()

  File “C:\Users\lenovo\AppData\Local\Programs\Python\Python37\lib\http\client.py”, line 296, in begin

    version, status, reason = self._read_status()

  File “C:\Users\lenovo\AppData\Local\Programs\Python\Python37\lib\http\client.py”, line 278, in _read_status

    raise BadStatusLine(line)

http.client.BadStatusLine: 4 

During handling of the above exception, another exception occurred:

Traceback (most recent call last):

  File “C:\Users\lenovo\AppData\Local\Programs\Python\Python37\lib\site-packages\requests\adapters.py”, line 449, in send

    timeout=timeout

  File “C:\Users\lenovo\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\connectionpool.py”, line 641, in urlopen

    _stacktrace=sys.exc_info()[2])

  File “C:\Users\lenovo\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\util\retry.py”, line 368, in increment

    raise six.reraise(type(error), error, _stacktrace)

  File “C:\Users\lenovo\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\packages\six.py”, line 685, in reraise

    raise value.with_traceback(tb)

  File “C:\Users\lenovo\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\connectionpool.py”, line 603, in urlopen

    chunked=chunked)

  File “C:\Users\lenovo\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\connectionpool.py”, line 387, in _make_request

    six.raise_from(e, None)

  File “string”, line 2, in raise_from

  File “C:\Users\lenovo\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\connectionpool.py”, line 383, in _make_request

    httplib_response = conn.getresponse()

  File “C:\Users\lenovo\AppData\Local\Programs\Python\Python37\lib\http\client.py”, line 1321, in getresponse

    response.begin()

  File “C:\Users\lenovo\AppData\Local\Programs\Python\Python37\lib\http\client.py”, line 296, in begin

    version, status, reason = self._read_status()

  File “C:\Users\lenovo\AppData\Local\Programs\Python\Python37\lib\http\client.py”, line 278, in _read_status

    raise BadStatusLine(line)

urllib3.exceptions.ProtocolError: (‘Connection aborted.’, BadStatusLine(‘4\x00\x00\x00\n’))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):

  File “D:/Pycharm/lemon/task_0525.py”, line 10, in module

    resp1 = requests.get(url,params=data)

  File “C:\Users\lenovo\AppData\Local\Programs\Python\Python37\lib\site-packages\requests\api.py”, line 75, in get

    return request(‘get’, url, params=params, **kwargs)

  File “C:\Users\lenovo\AppData\Local\Programs\Python\Python37\lib\site-packages\requests\api.py”, line 60, in request

    return session.request(method=method, url=url, **kwargs)

  File “C:\Users\lenovo\AppData\Local\Programs\Python\Python37\lib\site-packages\requests\sessions.py”, line 533, in request

    resp = self.send(prep, **send_kwargs)

  File “C:\Users\lenovo\AppData\Local\Programs\Python\Python37\lib\site-packages\requests\sessions.py”, line 646, in send

    r = adapter.send(request, **kwargs)

  File “C:\Users\lenovo\AppData\Local\Programs\Python\Python37\lib\site-packages\requests\adapters.py”, line 498, in send

    raise ConnectionError(err, request=request)

requests.exceptions.ConnectionError: (‘Connection aborted.’, BadStatusLine(‘4\x00\x00\x00\n’))

Process finished with exit code 1

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/183850.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-25 05:48
下一篇 2024-11-25 05:48

相關推薦

  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • Python計算陽曆日期對應周幾

    本文介紹如何通過Python計算任意陽曆日期對應周幾。 一、獲取日期 獲取日期可以通過Python內置的模塊datetime實現,示例代碼如下: from datetime imp…

    編程 2025-04-29
  • 如何查看Anaconda中Python路徑

    對Anaconda中Python路徑即conda環境的查看進行詳細的闡述。 一、使用命令行查看 1、在Windows系統中,可以使用命令提示符(cmd)或者Anaconda Pro…

    編程 2025-04-29
  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python列表中負數的個數

    Python列表是一個有序的集合,可以存儲多個不同類型的元素。而負數是指小於0的整數。在Python列表中,我們想要找到負數的個數,可以通過以下幾個方面進行實現。 一、使用循環遍歷…

    編程 2025-04-29
  • Python清華鏡像下載

    Python清華鏡像是一個高質量的Python開發資源鏡像站,提供了Python及其相關的開發工具、框架和文檔的下載服務。本文將從以下幾個方面對Python清華鏡像下載進行詳細的闡…

    編程 2025-04-29
  • Python字典去重複工具

    使用Python語言編寫字典去重複工具,可幫助用戶快速去重複。 一、字典去重複工具的需求 在使用Python編寫程序時,我們經常需要處理數據文件,其中包含了大量的重複數據。為了方便…

    編程 2025-04-29
  • 蝴蝶優化算法Python版

    蝴蝶優化算法是一種基於仿生學的優化算法,模仿自然界中的蝴蝶進行搜索。它可以應用於多個領域的優化問題,包括數學優化、工程問題、機器學習等。本文將從多個方面對蝴蝶優化算法Python版…

    編程 2025-04-29
  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智能、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29
  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29

發表回復

登錄後才能評論