Python學習——文件操作和異常處理


文件的讀寫
1.函數open()接受一個參數:要打開的文件名稱,並返回一個表示文件的對象
  1)文件路徑
    相對文件路徑
    絕對文件路徑
    linux/OS X 文件路徑中使用斜杠(/) 如file_path = '/home/filename.txt'
    Windows 文件路徑中使用反斜杠(\) 如file_path = 'C:\Users\filename.txt'
    
2.關鍵字with在不再需要訪問文件后將其關閉。
3.也可以用open()和close()來打開和關閉文件,但如此做當程序存在bug,close()語句未執行時,文件將不會正常關閉。
4.讀取文件
  1)方法read()可以讀取文件的全部內容,將其作為一個長字符串存儲,當read()到達文件末尾是返回一個空字符串,顯示出來是一個空行。要刪除多出來的空行,可以是使用方法rstrip()
  2)逐行讀取
    可使用for循環,注意這里每行的末尾都有換行符,可以使用方法rstrip()清除
     for line in file_object:
       print(line)
    可使用方法readlines(),從文件中讀取每一行,並將其存儲在一個列表中,在with代碼塊外仍可使用
     lines = file_object.readlines()
5.寫入文件 
  1)寫入文件時,調用open()要提供另一個實參,告訴Python你要寫入打開的文件,第二個參數說明了打開文件的模式:'w': 寫入模式,'r': 讀取模式, 'a': 附加模式, 'r+':讀取和寫入模式
  省略模式實參則默認以只讀方式打開
  ×××特別注意,以寫入模式打開文件時,如果指定的文件已經存在,Python將在返回文件對象前清空該文件
  with open(filename, 'w') as file_object:
    file_object.write("Hello World!")
  2)添加內容
    只想給文件添加內容,而不覆蓋原有內容,可以以附加模式打開文件
異常的處理
Python使用被稱為異常的特殊對象來管理程序執行期間發生的錯誤。每當發生錯誤時,它都會創建一個異常對象,若編寫了處理該異常的代碼,程序將繼續運行,否則程序將停止,並顯示一個traceback
其中包含有關異常的報告
1)try-except-else代碼塊
若try代碼塊中的代碼運行起來沒有問題,python將跳過except代碼塊;否則python將查找except代碼塊,並進行處理。而依賴於try代碼塊成功執行的代碼都放在else代碼塊中。
如果出現錯誤時,對錯誤不進行任何處理,可使用pass語句,pass還充當了占位符,提醒你程序的某個地方還什么都沒做,以后也許要添加些代碼
常見異常如: FileNotFoundError, ZeroDivisionError,ValueError
下面是練習用的兩個文件操作和異常處理的小程序

  

# title = "Alice in Wonderland"
# print(title.split())      方法split()將以空格為分隔符將字符串拆分成多個部分,並存儲於一個列表中


def count_words(filename):
''' count how many words in a text file '''
try:
with open(filename) as f_obj:
contents = f_obj.read()
except FileNotFoundError:
pass
#msg = "Sorry, the file " + filename + " does not exist."
#print(msg)
else:
words = contents.split()
print("The file " + filename + " has about " + str(len(words)) + " words.")


def addTwoNumber():
''' add two numbers. '''
first_number = input("First Number: ")
second_number = input("Second Number: ")
try:
first_number = int(first_number)
second_number = int(second_number)
except ValueError:
print("Please check if your input is legal.")
return False
else:
res = first_number + second_number
print(str(first_number)+" + "+str(second_number)+" is "+str(res))
return True


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM