標籤:位元組 for迴圈 特定 預設 character 計算 出錯 div text
1. file=open(‘xxx.txt‘, encoding=‘utf-8‘),open()函數是Python內建的用於對檔案的讀寫操作,返回的是檔案的流對象(而不是檔案本身,所以使用的方法都是流對象的方法)。使用這個函數時推薦指定encoding參數(Python2.7.x中好像不支援),因為Python代碼在不同的平台環境中使用的預設編碼方式不同,有可能會發生編譯出錯的問題。
2. 在open中的第一個檔案名稱的的參數中,包含的路徑表示雖然可以根據不同的環境使用斜杠和反斜線,但在Python中表路徑時,斜杠都是正確的。
3. file(流對象,open的預設模式下的傳回值)的一些方法,使用for迴圈對file進行迭代時,每次迭代都會自動分離出一行(效果相當於對readlines結果的for迴圈遍曆):
- file.name:擷取檔案的檔案名稱(包含路徑),即傳入open檔案名稱參數;
- file.encoding:擷取檔案的編碼方式;
- file.mode:擷取檔案的訪問方式,若沒有指定這個參數,open的預設訪問方式為唯讀“r”;
- file.closed:返迴文件是否關閉的狀態;
- file.close():關閉檔案(使用完一定及時使用這個函數關閉檔案);
- file.read():從當前定位(一般就是檔案開始處)擷取檔案內容,返回整個檔案內容的字串(此時定位在檔案尾,若再使用read()方法,會返回Null 字元串,因為已經到檔案尾了),若指定了需要擷取的字元數(可以給read方法傳入參數,比如:read(3)表示從當前定位往後讀取3個字元),則返回指定字元數的字串。注意不能從一個字元的中間位元組處讀取,因為有的字元(比如中文)的表示不止一個位元組,而定位是以位元組來計算位置的,read()是以字元來計數的;
- file.seek(n):使定位到特定位元組處(若使用read()方法讀完檔案後還想再讀取一次檔案,可以使用seek(0)重新置放到檔案開始處再讀取);
- file.tell():返回當前定位的位元組位置;
- file.readline():讀取檔案中的一行,並定位到下一行的開始處;
- file.readlines():讀取檔案中的所有行,返回所有行為元素組成的列表;
4. 使用open進行檔案操作使建議使用with建立運行環境,可以不用close()方法關閉檔案,無論在檔案使用中遇到什麼問題都能安全的退出,即使發生錯誤,退出運行時環境時也能安全退出檔案並給出報錯資訊。
# 使用with建立運行時環境
with open(‘xxx.text‘, encoding=‘utf-8‘) as file:
file_content = file.read()
file.seek(0)
file_ten_characters = file.read(10)
print(file_content)
print(file_ten_characters) #執行完with中的代碼後自動結束運行時環境
Python之檔案操作