import sys
print(sys.path)
- 1.是python去查找包或模塊
- 2.項目開始根目錄,python內置的目錄
- 3.雖然說python的安裝目錄下也可以存放我們寫的模塊,但是不建議(太多了,不大好找)
- 4.如果以後你發現模塊導入不了了 ,可以使用下sys.path
- 5.返回的是一個數組
- 6.用的時候需要導入sys:import sys
- python的目錄,主要放外部的庫,或者第三方的模塊
python學習交流Q群:903971231####
- 1.from..module ...import 方法、變量等
- from python_basic.class10_路徑.pac01.module_012 import a
print(a)
print(sys.path)
- 2.from pac ... import module
- from python_basic.class10_路徑.pac01 import module_012
print(module_012.a)
print(sys.path)
- import os
# 獲取絕對路徑
# 固定的寫法
# file 表示運行的文件的名稱
abs_path=os.path.abspath(file)
print(abs_path)
import os
# 當前文件的絕對路徑
abs_path=os.path.abspath(__file__)
print(abs_path)
- 1.os.path.dirname(file)
- 不建議用
# 獲取文件的目錄
dir_name = os.path.dirname(__file__)
print(dir_name)
- 建議用
- dir_name1 =os.path.dirname(file)
dir_name =os.path.dirname(abs_path)
abs_path =os.path.abspath(__file__)
dir_name =os.path.dirname(abs_path)
print(dir_name)
例子:假設若需要打開另外一個包pac01下的demo.txt
1.思路
1.獲取當前文件的絕對路徑
2.獲取當前文件的目錄路徑
3.當前文件的目錄路徑和pac01進行拼接
1.推薦方法
txt_file_path=os.path.join(dir_name,“pac01”,“demo.txt”)
PS一般來說,是通過某個文件去獲取項目的跟路徑
abs_path = os.path.abspath(__file__)
dir_name =os.path.dirname(abs_path)
txt_file_path=os.path.join(dir_name,"pac01","demo006.txt")
with open(txt_file_path,encoding="utf-8") as f:
print(f.readlines())
- 2.其他方法:不建議用
python學習交流Q群:903971231###
- # print(dir_name+'/pac01/demo.txt')
# print(dir_name+r'\pac01\demo.txt')
- 這種寫法不建議,因為不同的系統,windows一般是\,mac是/,改來改去麻煩
- 4.打開文件並讀取
- with open(txt_file_path,encoding="utf8") as f:
print(f.read())
1.os.getcwd():獲取當前的工作目錄
print(os.getcwd())
2.os.chdir():切換工作目錄
3.os.mkdir(“test_dir”)
創建工作目錄
os.mkdir(“test_dir”)
4.os.rmdir()
刪除工作目錄
os.rmdir(“test_dir”)
5.listdir()
print(os.listdir())
6.os.path.isfile()
7.os.path.isdir
print(os.path.isfile(__file__))
print(os.path.isdir(__file__))
1.程序如果遇到異常,不會再執行
2.寫代碼的人不能讓程序遇到異常就終止運行
1.捕獲他catch
2.拋出他raise
1.異常的捕獲
try:
你要執行的可能發生異常的代碼
except:
程序發生異常後,你希望程序做的事情
- 1.程序先執行try 當中的代碼
- 2.但是一旦try當中某個代碼報錯,會執行跳到except,try剩下的代碼不會執行
- 3.例子:
- 1.except捕獲了
try:
print("正在運行代碼")
a = 1 / 0
print(f"計算結果:{
a}")
except:
print("1不能除0,你需要改除數")
print("其他的程序")
輸出的結果是:
“”"
- 2.異常類型的捕獲
- 1.沒有捕獲該類型的情況
- # try:
try:
print("正在運行代碼")
a=1/0
print(f"計算結果:{
a}")
except IndexError:
print("1不能除0,你需要改除數")
print("其他的程序")
# 只會打印 正在運行代碼,因為報錯了,無法捕獲ZeroDivisionError異常,
- 2.捕獲到該類型的錯誤
try:
print("正在運行代碼")
a=1/0
print(f"計算結果:{
a}")
except ZeroDivisionError:
print("1不能除0,你需要改除數")
print("其他的程序")
輸出的結果是:
3.打印異常信息Exception(或某種類型的報錯) as e
- 1.單個異常的
- # 打印異常信息,一般用此方法
try:
print("正在運行代碼")
a=1/0
print(f"計算結果:{
a}")
except ZeroDivisionError as e:
print(e)
print("其他的程序")
輸出的結果是:
- 2.多個異常的
try:
lst = ['yz', 'addd']
lst[3]
a=1/0
except ZeroDivisionError as err:
print(err)
print("hello word")
# IndexError: list index out of range
- # 捕獲多個時
try:
{
"name":"zhangsan","age":18}['name1']
lst = ['yz', 'addd']
lst[3]
a=1/0
except (ZeroDivisionError,IndexError,KeyError) as err:
print(err)
print("hello word")
打印的結果:
try:
a = 1 / 0
{
"name":"zhangsan","age":18}['name1']
lst = ['yz', 'addd']
lst[3]
except ZeroDivisionError as err:
print(err)
print("ZeroDivisionError")
# 抓到這個異常
# division by zero
# ZeroDivisionError
except IndexError:
print("IndexError")
# 抓到這個異常 IndexError
except KeyError:
print("KeyError")
# 抓到這個異常 KeyError
打印的結果:
- 具體用哪個,根據實際情況來
2.try…finally
1.finally後的代碼無論正常與否,都會執行
try:
1/1
print("正常執行的代碼")
except ZeroDivisionError as e:
print("不能除以0")
finally:
print("無論正常與否,都會執行的代碼")
打印的結果:
- 2.異常的
try:
1/0
print("正常執行的代碼")
except ZeroDivisionError as e:
print("不能除以0")
finally:
print("無論正常與否,都會執行的代碼")
打印的結果:
- 2.常見應用在打開文件後,**關閉文件**
- # 假設demo.py被打開了
import io
try:
f=open("demo.py",'a')
f.read()
except io.UnsupportedOperation as e:
print("文件讀取失敗")
print(e)
finally:
f.close()
"""
打印結果:
文件讀取失敗
not readable
“”"
2.異常的拋出
def adult_add(a,b):
"""兩個大於等於18的數相加;小於18的不能相加"""
if (a<18) or (b<18):
raise ValueError("參數必須大於或等於18")
c=a+b
return c
adult_add(18,19)
adult_add(3,4) #ValueError: 參數必須大於或等於18
print("函數執行完畢")
"""
打印結果:
File ".../demo03_raise.py", line 13, in adult_add
raise ValueError("參數必須大於或等於18")
ValueError: 參數必須大於或等於18
"""
- try:
adult_add(3, 4) # ValueError: 參數必須大於或等於18
except:
print("函數執行完畢")
# 打印結果:函數執行完畢
- 1.assert後面跟一個條件語句,條件不成立就觸發條件異常
- 2.語法:assert 條件表達式
### 3.例子
- height=int(input("請輸入身高:"))
assert height>180
# 斷言為真時:請輸入身高:181
""" 斷言為假時:請輸入身高:180 Traceback (most recent call last): File ".../demo04_assert.py", line 9, in assert height>180 AssertionError """
今天這篇文章到這裡就結束了,喜歡的小伙伴記得點贊收藏。關於這篇文章有不懂的地方記得隨時提問
喲!!!下次見~~~