本文目錄一覽:
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