------ 檔案和異常------
------從檔案中讀取資料------
先建立檔案qingtian.txt
with open (『qingtian.txt』,』+r』,encoding=『utf-8』) as f:
a=f.read()
print(a)
------- 檔案的路徑-------
—相對路徑—
根據你組織檔案的方式,有時可能要開啟不在程式檔案所屬目錄中的檔案。例如,你可能將程式檔案儲存在了資料夾python_work中,而在資料夾python_work中,有乙個名為
text_files的資料夾,用於儲存程式檔案操作的文字檔案。雖然資料夾text_files包含在資料夾python_work中,但僅向open() 傳遞位於該資料夾中的檔案的名稱也不可行,因為python 只在資料夾python_work中查詢,而不會在其子資料夾text_files中查詢。要讓python開啟不與程式檔案位於同乙個目錄中的檔案,需要提供檔案路徑 ,它讓python到系統的特定位置
去查詢。
由於資料夾text_files位於資料夾python_work中,因此可使用相對檔案路 徑來開啟該資料夾中的檔案。相對檔案路徑讓python到指定的位置去查詢,而該位置是相對於當前執行的程
with open(『text_files/filename.txt』) as file_object:
a=file_object.read()
print(a)
—絕對路徑—
還可以將檔案在計算機中的準確位置告訴python,這樣就不用關心當前執行的程式儲存在什麼地方了。這稱為絕對檔案路徑 。
import os
file_path = 『python_18/qingtian.txt』
with open(file_path) as file_object:
a = file_object.read()
print(a)
異常python使用被稱為異常 的特殊物件來管理程式執行期間發生的錯誤。每當發生讓python不知所措的錯誤時,它都會建立乙個異常物件。如果你編寫了處理該異常的**,程式將繼
續執行;如果你未對異常進行處理,程式將停止,並顯示乙個traceback,其中包含有關異常的報告。
異常是使用try-except **塊處理的。try-except **塊讓python執行指定的操作,同時告訴python發生異常時怎麼辦。使用了try-except **塊時,即便出現異常,
程式也將繼續執行:顯示你編寫的友好的錯誤訊息,而不是令使用者迷惑的traceback
for example①
print(5/0)
執行後顯示
traceback (most recent call last):
file 「c:/users/xiaoliu/documents/tencent files/3230614498/filerecv/異常.py」, line 36, in
print(5/0)
zerodivisionerror: division by zero
使用try-except**塊
try:
print(5/0)
except zerodivisionerror:
print(「you can』t divide by zero!」)
for example ②
print(「give me two numbers, and i』ll divide them.」)
print(「enter 『q』 to quit.」)
while true:
first_number = input("\nfirst number: ")
if first_number == 『q』:
break
second_number = input("second number: ")
if second_number == 『q』:
break
answer = int(first_number) / int(second_number)
print(answer)
當輸入first number為5 last number為0時異常
對上面的**進行優化 新增異常
print(「give me two numbers, and i』ll divide them.」)
print(「enter 『q』 to quit.」)
while true:
first_number = input("\nfirst number: ")
if first_number == 『q』:
break
second_number = input("second number: ")
try:
answer = int(first_number) / int(second_number)
except zerodivisionerror:
print(「you can』t divide by 0!」)
else:
print(answer)
處理檔案異常
filename = 『alice.txt』
with open(filename) as f_obj:
contents = f_obj.read()
進行處理
filename = 『alice.txt』
try:
with open(filename) as f_obj:
contents = f_obj.read()
except filenotfounderror:
msg = 「sorry, the file " + filename + " does not exist.」
print(msg)
對文字分析(當檔案存在時有字母時)
filename = 『alice.txt』
try:
with open(filename) as f_obj:
contents = f_obj.read()
except filenotfounderror:
msg = 「sorry, the file " + filename + " does not exist.」
print(msg)
else:
# 計算檔案大致包含多少個單詞
words = contents.split()
num_words = len(words)
print(「the file " + filename + " has about " + str(num_words) + " words.」)
失敗時可以直接pass例如
def count_words(filename):
「」「計算乙個檔案大致包含多少個單詞」""
try:
# 監控**塊
with open(filename) as f_obj:
contents = f_obj.read()
except filenotfounderror:
pass#失敗直接pass處理
else:
words = contents.split()
num_words = len(words)
print(「the file " + filename + " has about " + str(num_words) + " words.」)
filenames = [『alice.txt』, 『siddhartha.txt』, 『moby_dick.txt』, 『little_women.txt』]
for filename in filenames:
count_words(filename)
-----異常裡面的finally-----
finally是無論異常不異常都會執行的模組
try:
# 監控**塊
except +異常型別 as+別名異常
# 進行異常處理:
raise 別名異常(把異常丟擲來可加也可以不加)
else:
執行程式(不異常時進行的**塊)
finally:
執行程式(無論異常異常不異常都執行的可以加也可以不加)
python基礎知識整理
一 資料型別 整型 int 浮點型 float 複數型 字串型 二 輸入輸出 nnum input 請輸入 print 輸出的是 nnum print d nnum 三 選擇結構 if elif else 四 運算子 會得到小數 整除 次方 五 列表 list 元組 tuple 字典 dict so...
python基礎知識整理2
可迭代物件 可 於迭代操作 for 迴圈 的物件。擁有 iter 法的物件 注意 iter 法的返回值是迭代器物件 迭代器任何由實現了 iter 法的類建立的物件都是可迭代對 象。任何由實現了 iter 和 next 法的類建立的物件 都是迭代器物件。迭代器是懶載入的 延遲載入的 使 for對迭代器...
python基礎知識整理(一)
brew install python31 mac自帶python2.7,用上述方法安裝了python3之後,mac會將預設的2.7版本變為3的版本,因為此時,系統預設的py啟動路徑,由原來的mac系統預設的直譯器變為當前使用者安裝的py直譯器 2 再想用python2.7版本時,在ide選擇ven...