我們經常需要從文件中讀取數據,因此學會文件的讀取很重要,下面來介紹一下文件的讀取工作:
1.讀取整個文件
pi_digits.text
3.1415926535
8979323846
2643383279
單純的讀取一個文件,我們首先要打開文件,然后讀取里面的內容,使用read()方法,讀取文件的全部內容,然后把讀取出來的內容進行賦給一個變量;如下所示:
file_reader.py
with open('pi_digits.text') as file_object:
contents = file_object.read()
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()方法把文件關閉,這點可能經常會一不小心忘記,只記得打開文件,但是沒有關閉文件。
二、寫入文件
保存數據的最簡單的方式之一是將其寫入到文件中。
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')的時候一定要小心。
