咱們常常須要從文件中讀取數據,所以學會文件的讀取很重要,下面來介紹一下文件的讀取工做:git
1.讀取整個文件安全
pi_digits.text函數
3.1415926535spa
8979323846對象
2643383279ip
單純的讀取一個文件,咱們首先要打開文件,而後讀取裏面的內容,使用read()方法,讀取文件的所有內容,而後把讀取出來的內容進行賦給一個變量;以下所示:字符串
file_reader.pyit
with open('pi_digits.text') as file_object:io
contents = file_object.read()class
print(type(contents))
print(contents)
輸出結果以下:
3.1415926535
8979323846
2643383279
<class 'str'>
還有一種方法讀取文件,咱們來看看,直接打開而後進行讀取,不使用with語句:
f = open('pi_digits.text')
contents = f.read()
print(contents)
f.close()
這種方法直接讀取文件,可是要記得關閉文件,咱們要知道,咱們操做的是什麼,目的是什麼,若是咱們只是單純的讀取文件的內容,而不去修改它,那麼就單純使用open()方法,不用第二參數便可:
第一種方法中,with open('pi_digits.text') as file_object:作了大量的工做。咱們先來看看open()。要以任何方式使用文件——哪怕僅僅打印其內容,都得先打開文件,這樣纔可以訪問它,並且第一種方法讀取以後,賦給變量contents,變量contents是一個字符串,不是列表,也不是元祖之類的,而只是單純的字符串狀況;第二種方法必須記得關閉文件。
文件的相對路徑和絕對路徑
這兩種方法的區別:with在再也不須要訪問文件後將其關閉。在這個程序中,注意到咱們調用了open(),但沒有調用close();咱們也能夠調用open()和close()來打開和關閉文件(第二種方法),但這樣作時,若是程序存在bug,致使close()語句未執行,文件將不會關閉。這看似微不足道,但未妥善地關閉文件可能會致使數據丟失或受損。若是在程序中過早地調用close(),咱們會發現須要使用文件時它已關閉(沒法訪問),這會致使更多的錯誤。並不是任何狀況下都能輕鬆地肯定文件的恰當時機,但經過使用前面所示的結構,可以讓Python去肯定:咱們只管打開文件,並在須要時使用它,Python自會在合適的時候自動將其關閉。
因此這兩種方法都是能夠的,只是with打開的方式更安全一些,不須要咱們去肯定何時關閉文件,而open()直接打開的話就須要咱們本身去肯定何時要關閉文件,要使用close()方法關閉文件。
2.逐行讀取
f = open("pi_digits.text")
for line in f:
print(line.strip())
f.close()
咱們使用open()和close()方式打開文件,這種狀況下,咱們必定要記得關閉文件,以避免文件遭到破壞,咱們打開文件,
也可使用with語句打開文件,這種方法讓咱們避免使用close()語句,系統會自動幫助咱們在合適的時機關閉文件,也不用擔憂異常的問題。
with open('pi_digits.text') as f:
for line in f:
print(line)
咱們使用with語句打開這個文件,並命名爲f,而後遍歷這個打開的文件,輸出每一行。這樣咱們就能夠實現按行讀取的方法。
3.把文件讀取到一個列表中
with open('pi_digits.text') as f:
lines = f.readlines()
print(lines)
把文件讀取到一個列表中,readlines()方法是從文件中讀取每一行,並將其存儲到一個列表中;接下來,該列表被存儲到變量lines中;讀取文件獲得一個列表的方法,咱們讀取這個文件,而且獲得一個列表
f = open("pi_digits.text")
lines = f.readlines()
print(lines)
f.close()
咱們在直接使用open()打開文件的時候,必定要記得關閉文件,使用close()方法把文件關閉,這點可能常常會一不當心忘記,只記得打開文件,可是沒有關閉文件。
2、寫入文件
保存數據的最簡單的方式之一是將其寫入到文件中。
write_message.py
with open('programming.text','w') as f:
f.write("I love programming")
在這個示例中,調用open()時提供了兩個實參。第一個實參也是要打開的文件的名稱;第二個實參("w")告訴Python,咱們要以寫入模式打開這個文件。打開文件時,可指定讀取模式('r')、寫入模式('w')、附加模式('a')或者讓咱們可以讀取和寫入文件的模式('r+').若是咱們省略了模式實參,Python將以默認的只讀模式打開文件。
讀取和寫入文件有兩種方法,一種是with語句打開文件;另外一種是open()和close()結合使用打開和讀取文件。
咱們要知道咱們打開文件是作什麼若是隻是單純的打開和讀取文件,只須要open()便可;要是寫入的話,就須要指定第二參數。默認省略參數的狀況下是隻讀模式的。
寫入的方式
(1)寫入模式('r')
(2)附加模式('a')
with open("pi_digits.text",'a') as f:
f.write("I love you,too,Really\n")
f.write("I also love finding meanting in large datasets.\n")
f.write("I love to start to make success.")
寫入模式('r')和附加模式('a')都是向文件中寫入內容,不一樣的是寫入模式要覆蓋以前文件裏面的內容。
若是咱們要寫入的文件不存在,函數open()將自動建立它。然而,以寫入('w')模式打開文件時千萬要當心,由於若是指定的文件已經存在,Python
將在返回文件對象前清空該文件。因此使用寫入模式('w')的時候必定要當心。