Python使用中錯誤(持續更新.....)

一、在使用requests發送請求,響應數據轉成json提示,沒有可解碼的jsonajax

解決辦法:數據庫

這是因爲,發送請求的數據,存在錯誤,響應出錯好比404 400,因此找不到能夠解碼的jsonjson

示例以下:函數

postdata = '''{'userName':'13718651996',
            'passwd':'yhlxxxx870120',
            'validateCode':'abc',
            'rememberMe':'true'}'''
url = 'https://secure.elong.com/passport/ajax/elongLogin'
response = Session().post(url,data=postdata)
print(response.json())

其實從圖上很明顯能看出問題,由於postdata是字符串類型,不是dict字典post

如上圖代碼若是執行報以下錯誤:url

解決辦法,eval()函數將字符串,轉換成字典;以下所示spa

postdata = '''{'userName':'13718651996',
            'passwd':'yhlxxxx870120',
            'validateCode':'abc',
            'rememberMe':'true'}'''
url = 'https://secure.elong.com/passport/ajax/elongLogin'
request = Session().post(url,data=eval(postdata)) print(request.json())

有人可能會說,你這不是畫蛇添足嗎?把postdata直接定義成字典不就好了;你說的沒錯確實能夠這樣調試

postdata = {'userName':'13718651996',
            'passwd':'yhlxxxx870120',
            'validateCode':'abc',
            'rememberMe':'true'}
url = 'https://secure.elong.com/passport/ajax/elongLogin'
request = Session().post(url,data=postdata)
print(request.json())

可是若是如下這串數據,存儲在數據庫中,或者excel中,讀出來的時候默認就是字符串,若是讀出來直接使用就會出現本文的錯誤,excel

因此哪裏錯了這個要知道,這是一個小細節;調試輸出,發現輸出跟如下是同樣的,code

沒有錯呀這是字典呢{'xxxx':'xxx'..........},可是它就是字符串。容易被忽略,因此還要使用eval(postdata)函數轉成字典

{'userName':'13718651996',
            'passwd':'yhlxxxx870120',
            'validateCode':'abc',
            'rememberMe':'true'}

正確代碼:

postdata = '''{'userName':'13718651996',
            'passwd':'yhlxxxx870120',
            'validateCode':'abc',
            'rememberMe':'true'}'''
url = 'https://secure.elong.com/passport/ajax/elongLogin'
request = Session().post(url,data=eval(postdata))
print(request.json())

------------------------------我是華麗的分隔線----------------------------------

二、join拼接路徑

os.path.join拼接路徑,遇到的問題,常常會把本身繞進去

 

str = r'd:\PHJ\Reporter\LOGS'
#報告文件路徑
reporPath = os.path.join(str,'report')
isExistPath(reporPath) #建立文件夾

print(reporPath)

imgPath = os.path.join(reporPath,'\\Image')
print(imgPath)

 

錯誤輸出輸出:

d:\PHJ\Reporter\LOGS\report
d:\Image

咱們期待結果:

d:\PHJ\Reporter\LOGS\report
d:\PHJ\Reporter\LOGS\report\Image

是否是很奇怪,問題到底出在哪裏,這個問題讓我糾結了很久,一個不太注意的小問題。

沒錯,咱們就是拼接的時候,多了兩個返斜扛。去掉後問題解決。

 

三、寫完項目,直接在計算機中雙擊py文件,報文件中引用的包找不到

項目結構,要執行run文件夾下的run.py ;報找不到run文件中引用的包


緣由:雙擊執行的時候,不會自動向上搜索包,只會在當前文件夾及子文件夾中搜索

那麼怎麼辦呢,把執行文件,在項目根目錄下建個run.py作爲執行入口,問題解決。

 

你可能會說了,這樣作,我一些引用路徑的地方不對了,那我估計是獲取路徑的方式是

os.getcur  獲取當前路徑,這樣一來,你每一個文件用的路徑都是當前引用文件所在的路徑

因此建議起個gl文件,用來存儲路徑。等信息。

os.path.abspath(os.path.dirname(__file__)) 用這個獲取當前路徑,而不要用os.getcur

不然,即便你把獲取路徑這些,配置到gl也就是單獨一個py中,那麼不一樣位置調用。路徑也會不一樣。

相關文章
相關標籤/搜索