1. 程式人生 > >異常處理與內建模塊

異常處理與內建模塊

得到 代碼塊 結果 ict min enc nbsp AS from

一、異常處理

1.1、異常常用格式

try:      #try接代碼塊,如果代碼正常則不執行except塊
print(2/0)
except Exception as e:   #except捕獲異常,Exception指所有異常
print("除數不能為0")
raise e #拋出異常
finally:          #finally不管有沒有異常都會執行,這個按照需要使用
print("不管有沒有發生異常,都得執行這個")

1.2、rest接口(定義顯示異常的詳細信息)

import json
def rest():
result = dict()    #rest以字典形式展現
try:
print(2/0)
except Exception as e:
result["msg"] = "除數不能為0"
result["code"] = 403
result["data"] = [{"a":1}, {"b":2}]
finally:
return json.dumps(result)
if __name__ == ‘__main__‘:
print(rest())
輸出:
{‘msg‘: ‘除數不能為0‘, ‘code‘: 403, ‘data‘: [{‘a‘: 1}, {‘b‘: 2}]}

二、內建模塊

Python之所以自稱“batteries included”,就是因為內置了許多非常有用的模塊,無需額外安裝和配置,即可直接使用。

2.1、datetime模塊

datetime是Python處理日期和時間的標準庫

①、獲取當前時間:

from datetime import datetime

now = datetime.now()
print(now)

註意到datetime是模塊,datetime模塊還包含一個datetime類,通過from datetime import datetime

導入的才是datetime這個類。

如果僅導入import datetime,則必須引用全名datetime.datetime

datetime.now()返回當前日期和時間,其類型是datetime

②、獲取固定的參數

from datetime import datetime, timedelta

print(datetime.now().year) #年
print(datetime.now().month) #月
print(datetime.now().day) #日
print(datetime.now().hour) #時
print(datetime.now().minute) #分
print(datetime.now().second) #秒
print(datetime.now().microsecond) #毫秒
print(datetime.now().strftime("%Y-%m-%d")) #固定格式的年月日,是由時間轉換為字符串格式
print(datetime.now().strptime("2018-04-22", "%Y-%m-%d")) #將"2018-04-22"這個字符串轉化為時間類型

%Y 帶世紀部分的十制年份;
%m 十進制表示的月份;
%d 十進制表示的每月的第幾天;
%H 24小時制的小時;
%M 十進制表示的分鐘數;
%S 十進制的秒數;
%c 標準時間,如:04/25/17 14:35:14,;
%a 本地簡化星期名稱;
%b 本地簡化月份名稱;
%d 一個月中的第幾天(01-31)

③、在當前時間上面做增減

對日期和時間進行加減實際上就是把datetime往後或往前計算,得到新的datetime。加減可以直接用+-運算符,不過需要導入timedelta這個類:

from datetime import datetime, timedelta

now = datetime.now()
print(now - timedelta(weeks=1))   #只能限制在星期、天數和小時數上增減
print(now - timedelta(days=1)) #只能限制在星期、天數和小時數上增減
print(now - timedelta(hours=1)) #只能限制在星期、天數和小時數上增減

2.2、time模塊

①、間隔多久後執行

import time

time.sleep(5) #以秒數計算
print("hello")

②、時間戳(從1970-01-01開始到現在的秒數)

import time

print(time.time())

2.3、commands模塊(調用linux系統命令,這是linux下面獨有的模塊,而通用的的是subprocess模塊)

①、commands.getoutput(cmd)  返回結果為cmd命令執行完的結果

②、status,output = commands.getstatusoutput(cmd) commands.getstatusoutput(cmd)的返回結果就是一個tuple,第一個值得shell執行的結果,如果shell執行成功,返回0,否則為非0,第二個是一個字符串,就是我們shell命令的執行結果,python通過一一對應的方式復制給status和output,就是這個python語言的巧妙之處

③、示例

In [5]: commands.getoutput("ifconfig | grep eth")
Out[5]: ‘eth1 Link encap:Ethernet HWaddr 00:50:56:88:53:53 ‘

In [6]: commands.getstatusoutput("ifconfig | grep eth")
Out[6]: (0, ‘eth1 Link encap:Ethernet HWaddr 00:50:56:88:53:53 ‘)

三、模塊和目錄的區別

看是否是模塊主要是看目錄裏面有沒有__init__.py這個文件,模塊是可以被其他文件跨目錄調用的,而目錄則不可以

異常處理與內建模塊