Python學習筆記(九):文件

第九章 文件


9.1 從文件中讀取數據


9.1.1 讀取整個文件

pi.txt

3.14159
  26535
  89793
with open('pi.txt','r') as file_object:
    contents = file_object.read()
    print(contents)

輸出:

3.14159
  26535
  89793
  
  • with open()可以不需要在訪問文件後關閉,隨着with的結束,文件會自動關閉
  • open()將目標文件打開,當做一個對象。
  • read()將文件中所有內容讀取爲一個長長的字符串
  • 輸出的文本最後有空行是因爲read()達到文件尾時會返回一個空字符串。消除空行可用rstrip()

9.1.2 逐行讀取

with open('pi.txt','r') as file_object:
    for line in file_object:
        print(line)

輸出:

3.14159

  26535
  
  89793
  

每行之間都有一個空行,是因爲文本文件每行結尾都有一個換行符,而print()每次都會自動換行,所以多了一個換行。
print(line)改爲print(line.rstrip())即可解決

9.1.3 創建一個包含文件各行內容的列表

with open('pi.txt','r') as file_object:
    lines = file_object.readlines()
    
for line in lines:
    print(line.strip())

readlines()讀取文本中的每一行,並存儲在一個列表裏。
調用len()可以獲知文件內容的行數。
這樣可以讓在with open結束後依然可以使用文本內容。

9.1.4 replace()替換字符串的內容

s = 'I Love C++'
s.replace('C++','Python')
print(s)

I Love Python


9.2 寫入文件


9.2.1 寫入空文件

with open('filename', 'w') as fo:
    fo.write('I love you')

打開文件,會發現文件內容爲:

I love you

9.2.2 寫入多行

with open('filename', 'w') as fo:
    fo.write('I love you')
    fo.write('I love you too')

打開文件,會發現文件內容爲:

I love youI love you too

write()不會像print()一樣自動換行,所以要自己添加換行符

with open('filename', 'w') as fo:
    fo.write('I love you\n')
    fo.write('I love you too')

9.2.3 在文件後附加內容

就是打開模式改爲’a’


9.3 異常


9.3.1 ZeroDivisionError異常

如果程序中出現除以0的情況,程序將會反饋Traceback錯誤信息:ZeroDivisionError

9.3.2 try-except 代碼塊

當你認爲可能發生錯誤時,可編寫一個try-except代碼塊來處理可能引發的異常。

try:
    print(5/0)
except:
    print("You can't divide by zero")
  • try代碼塊出現異常時,Python將跳過try代碼塊而去執行except代碼塊。

9.3.3 else 代碼塊

num1 = 5
num2 = int(input())
answer = num1/num2
try:
    print(5/0)
except:
    print("You can't divide by zero")
else:
    print(answer)

-當try代碼塊執行成功時,將會接着執行else代碼塊

9.3.4 FileNotFoundError異常

文件打開失敗時會返回改錯誤

9.3.5 split()處理字符串

split()函數將字符串根據空格分隔,並創建一個 單詞列表

s = 'I love you'
words = s.split()
print(words)

[‘I’, ‘love’, ‘you’]

調用len()函數即可以獲知字符串單詞個數。

9.3.6 處理多個文件

有一種方法是將一系列文件名存在列表裏:

files = ['f1.txt', 'f2.txt', 'f3.txt']
for filename in files:
    with open(filename):
        ...

9.3.7 使用pass語句跳過異常語句

try:
    print(5/0)
except:
    pass

pass語句會讓Python什麼都不做,“一聲不吭”。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章