我們經常需要從文件中讀取數據,因此學會文件的讀取很重要,下面來介紹一下文件的讀取工作:
poem.txt
Shall I compare thee to a summer's day?
我怎麼能夠把你來比作夏天
Thou art more lovely and more temperate。
你不獨比它可愛也比它溫婉
Rough windsdo shakethe darling buds of May,
狂風把五月寵愛的嫩蕊作踐
And summer's lease hath all too short a date。
夏天出賃的期限又爲免太短
1、讀取文件
單純的讀取一個文件,我們首先要打開文件,然後讀取裏面的內容,使用read()方法,讀取文件的全部內容,然後把讀取出來的內容進行賦給一個變量;
- with方式打開文件:
- open方法直接打開並讀取文件,不使用with語句,此方法直接讀取文件,但是要記得關閉文件,我們要知道,我們操作的是什麼,目的是什麼,如果我們只是單純的讀取文件的內容,而不去修改它,那麼就單純使用open()方法,不用第二參數即可。
# -*- coding: UTF-8 -*-
import sys
import json
reload(sys)
sys.setdefaultencoding('utf-8')
def file_Reader():
#with方式讀取
with open('poem.txt') as file_object:
#讀取整個文件
contents = file_object.read()
print(type(contents))
print(contents)
#
#逐行讀取
# for line in file_object:
# print line
#讀取文件內容到一個列表中
# lines = file_object.readlines()
# print lines
#*******************************************
#直接open文件,記得close文件
# f = open('poem.txt')
# 讀取整個文件
# contents = f.read()
# print(contents)
#組行讀取
# for line in f:
# print line.strip()
# 讀取文件內容到一個列表中
# lines = file_object.readlines()
# print lines
# f.close()
if __name__ == "__main__":
file_Reader()
二者異同點:
- 方法1,with 語句在不再需要訪問文件後將其關閉。直接使用open()方法打開文件,但不需要自己調用close()關閉文件;
- 方法2,直接使用open()方法打開文件,要自己調用close()方法關閉文件。如果程序存在bug,導致close()語句未執行,文件將不會關閉。這看似微不足道,但未妥善地關閉文件可能會導致數據丟失或受損。如果在程序中過早地調用close(),我們會發現需要使用文件時它已關閉(無法訪問),這會導致更多的錯誤。並非任何情況下都能輕鬆地確定關閉文件的恰當時機。
- 兩種方法都可打開文件,方法1with打開的方式更安全一些,不需要我們去確定什麼時候關閉文件。
- 兩種方法在打開文件後,都可讀取整個文件內容/逐行讀取/把文件讀取到一個列表中。
二、寫入文件
保存數據的最簡單的方式之一是將其寫入到文件中。
讀取和寫入文件有兩種方法,一種是with語句打開文件;另一種是open()和close()結合使用打開和讀取文件。
# -*- coding: UTF-8 -*-
import sys
import json
reload(sys)
sys.setdefaultencoding('utf-8')
def file_Writer():
#with方式寫入文件內容
# with open("testWriter.txt","w") as f:
# f.write("hello,world")
#
#open()和close()結合使用打開文件
f = open("testWriter.txt", "w")
f.write("hello,world666")
f.close()
if __name__ == "__main__":
# file_Reader()
file_Writer()
打開方式 | ||
"r" | 讀取模式 | 默認的只讀模式打開文件 |
"w" | 寫入模式 | 寫入模式要覆蓋之前文件裏面的內容 |
"a" | 附加模式 | |
"r+" | 可讀取和寫入文件的模式 |
打開文件時,可指定打開模式,如果我們要寫入的文件不存在,函數open()將自動創建它。然而,以寫入('w')模式打開文件時千萬要小心,因爲如果指定的文件已經存在,Python將在返回文件對象前清空該文件。所以使用寫入模式('w')的時候一定要小心。