python异常处理及内置模块
異常處理
有時候我們在寫程序的時候會出現錯誤或者異常,導致程序終止,如下這個例子:
#!/usr/bin/env python a = 2/0 print(a)結果提示如下錯誤:
Traceback (most recent call last):File "002.py", line 2, in <module>a = 2/0 ZeroDivisionError: integer division or modulo by zero上面提示被除數不能為0,從而導致程序運行中斷,為了能夠讓程序正常執行,我們可以添加tey...except...語句:
''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:778463939 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' try:a = 2/0print(a) except Exception as e:print("除數不能為0")#raise e # 把異常拋出來 finally:print("無論發生什么情況,都執行此步。")結果: 除數不能為0 無論發生什么情況,都執行此步。上面如果加上了raise e,則會把異常信息打印出來:ZeroDivisionError: integer division or modulo byzero。其中except部分是對錯誤信息進行處理,finally是不管之前有沒有異常,都會執行此步驟。
python標準異常類:
模塊
模塊和目錄的區別,看整個文件夾里面是否有__init__.py文件,有就是模塊,沒有就是普通目錄。__init__.py一般是一個空文件。
通常一個.py文件我們就可以稱之為一個模塊。
a.py #!/usr/bin/env python def hello():print("hello") hello()def world():print("world") world()b.py #!/usr/bin/env python import a運行python b.py結果: hello world如上 ,當我們在b.py中將a.py作為模塊導入之后,在運行b.py的時候,直接會運行a.py里面的所有函數,但是如果我們只想要在b.py中調用a.py中指定函數的時候運行,就需要在a.py中加入if __name__ == "__main__":語句:
a.py #!/usr/bin/env python def hello():print("hello")def world():print("world")if __name__ == "__main__":hello()world()b.py #!/usr/bin/env python import a a.hello() a.world()運行python b.py之后的結果: hello world由上可以看出,加上if __name__ == "__main__":語句之后,就能滿足我們的需求。
總結:
1、文件夾里面需要有__init__.py文件的才能當做模塊使用。
2、if __name__ == "__main__":語句的使用。
內置模塊
datetime
''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:778463939 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' import datetime # 下面我們使用的是datetime模塊下面的datetime模塊,所以使用的時候需要datetime.datetime,為了更方便的使用,也可以直接使用from datetime import datetime print(datetime.datetime.now()) # 打印當前時間 2018-04-23 09:33:32.055974 print(datetime.datetime.now().year) # 打印當前時間中的年份 2018 print(datetime.datetime.now().month) # 打印當前時間中的月份 4 print(datetime.datetime.now().day) # 打印當前時間中的天 23 print(datetime.datetime.now().hour) # 打印當前時間中的小時 9 print(datetime.datetime.now().minute) # 打印當前時間中的分鐘 33 print(datetime.datetime.now().second) # 打印當前時間中的秒 32 print(datetime.datetime.now().microsecond) # 打印當前時間中的毫秒 56063 print(datetime.datetime.now().strftime("%Y-%m-%d")) # 從時間格式轉換成字符串,滿足"%Y-%m-%d"格式的字符串格式 2018-04-23 09:33:32.055974 --> 2018-04-23 print(datetime.datetime.now().strftime("%c")) # 標準時間,類似于這種格式 Mon Apr 23 09:50:45 2018 print(datetime.datetime.now().strftime("%a")) # 本地簡化星期名稱 Mon print(datetime.datetime.now().strftime("%b")) # 本地簡化月份名稱 Apr print(datetime.datetime.now().strftime("%d")) # 當前這天是一個月中的第幾天 23 # 直接導入datetime模塊下面的datetime #from datetime import datetime #print(datetime.now())%Y 帶世紀部分的十進制年份
%m 十進制表示的月份
%d 十進制表示的每月的第幾天
%H 24小時制的小時
%M 十進制表示的分鐘數
%S 十進制的秒數
如果我們需要表示昨天、上周等情況:
#!/usr/bin/env python from datetime import datetime from datetime import timedelta now_time = datetime.now() # 當前時間 print(now_time) b = now_time + timedelta(days = -1) # 一天前 print(b) c = now_time + timedelta(days = -1,weeks = -1) # 一個周前的前一天 print(c)結果: 2018-04-23 10:35:40.245370 2018-04-22 10:35:40.245370 2018-04-15 10:35:40.245370time模塊
這個time模塊不是datetime下面的那個模塊,它是一個單獨的模塊。
commands模塊
有時候我們需要使用shell命令,就用到了commands模塊。
''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:778463939 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' import commands output = commands.getoutput("ls -ll") # 返回執行完命令后的結果 print(output) status, output = commands.getstatusoutput("ls -l") # 返回一個元組,如果shell執行成功,第一個值(狀態碼)是0表示成功,第二個值是shell執行結果 print(status,output)subprocess模塊
和commands模塊用法類似,都是用來執行shell命令的。
#!/usr/bin/env python from subprocess import PIPE,Popen p = Popen(['ifconfig'],stdout=PIPE) data = p.stdout.read() print(data)總結
以上是生活随笔為你收集整理的python异常处理及内置模块的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python教程:Sys 与 Impor
- 下一篇: Python条件判断if、for、whi