python程序基础知识(五)python文本文件操作
目錄
- 1.概述
- 2.寫文本文件
- 3.讀文本文件
- 3.1 讀字符函數read
- 3.2 讀取一行的函數readline和讀取所有行的readlines
- 4.文件編碼
- 5.文件指針
- 6.二進制文件
1.概述
我們之前學習了python的數據類型、數據機構、函數與模塊、類與對象,我們要學習一下數據存儲。數據可以存儲到什么樣的文件中,以及如何進行文件操作。這一節主要介紹文本文件的相關知識。2.寫文本文件
文本文件是用來存儲程序和數據的。 打開文本文件:
格式:
文件對象 = open(文件名,使用文件方式)
文件用open函數來打開,文件對象是一個python對象,open函數是打開文件的函數,文件名是被打開文件的文件名字符串
文件的使用方式:
rt:read txt,只讀打開一個文本文件,只允許讀取數據。如果文件存在,則打開后可以按順序讀,如果文件不存在,則打開失敗。
wt:write txt,只寫打開或建立一個文本文件,只允許寫數據。如果文件不存在,則建立一個空文件;如果文件已經存在,就把原文件內容清空。
at:append txt,追加打開一個文本文件,并在文件末尾寫數據。如果文件不存在,則建立一個空文件;
如果文件已存在,則把原文件打開并保持原內容不變,文件位置指針指向末尾,新寫入的數據追加在文件末尾。
關閉文本文件:
格式:
文件對象.close()
打開文件操作完畢后要關閉文件釋放文件資源,文件對象是用open函數打開后返回的對象。
文件操作的異常:出現異常建議使用try…except語句捕獲可能發生的錯誤。
寫文本文件:
格式:
文件對象.write(s)
write函數的功能是把一個字符寫入指定的文件中,s是要待寫入的字符串。
被寫入的文件可以以寫、追加方式打開,用寫方式打開一個已存在的文件時,將清除原有的文件內容,寫入字符從文件首開始。
想保留原有的字符串,則要以追加方式打開文件。
案例如下:
# 將一個字符串寫入文本文件 try:f = open('abc.txt','wt')f.write('abcdefg')f.close() except Exception as err:print(err)# abc.txt內容是:abcdefg # 將一個字符串追加寫入文本文件 try:f = open('abc.txt','at')f.write('123456')f.close() except Exception as err:print(err) # abc.txt內容是: # abcdefg # 1234563.讀文本文件
將數據存儲到文本文件之后,我們也要進行讀取文本文件的操作。
3.1 讀字符函數read
read函數的功能是從指定的文件中讀字符:
格式:
文件對象.read()
文件對象.read(n)
read()可以讀取整個文件的內容,read(n)可以讀取指定的n個字符,如果要讀的n大于文本文件的字符長度,那么就讀取所有的文件內容.
當文件指針指到文件的尾部時,再讀就返回一個空字符串。
其結果是:
abc 12345 ----- abc ----- abc----- abc 123453.2 讀取一行的函數readline和讀取所有行的readlines
從文件中讀取一行:
格式:
文件對象.readline()
返回值為一行字符串,readline()的規則是在文件中連續讀取字符組成的字符串,一直讀到’\n’字符或者讀到文件的尾部為止。
如果讀到了’\n’,那么返回的字符串包含’\n’。
從文件中讀取所有行:
格式:
文件對象.readlines()
返回所有的行字符串,每行都是用’\n’分開,而且一行的結尾如果是’\n’,則包含’\n’。
一般使用for循環從readlines中提取每一行.
其結果是:
abc12345家鄉-----read one line----- abc 12345 家鄉 ---main---- ['abc\n', '12345\n', '家鄉'] --read all lines------ abc 12345 家鄉4.文件編碼
文件的本質上是二進制文件,因此文本文件存儲時,也是通過某種編碼轉化為二進制數據存儲的,相同的文本采用不同的編碼,得到的二進制數據是不同的。
對于漢字來說是十分重要的。 中文windows系統默認采用的是GBK編碼。
GBK編碼:一個英文字符是ASCII碼,占一個字節,一個漢字是兩個字節的內碼. UTF-8編碼:英文字符占一個字節,漢字占三個字節。
其結果是:
abc12345家鄉 ----------- abc12345家鄉 ----------- abc12345瀹朵埂 ----------- 'utf-8' codec can't decode byte 0xbc in position 12: invalid start byte5.文件指針
文件被打開后,即可以執行寫操作,也可以進行讀操作,從什么地方開始讀寫是可以被控制的,這要求文件以讀寫的形式打開,
同時使用一個文件指針指向文件字節流的位置,調整指針的位置,就可以進行任意位置的讀寫。
在程序看來,文件是由一連串的字節組成的字節流,文件的每個字節都有一個位置編號, 一個有n個字節的文件字節編號依次為1,2 3…n號,在第n字節后面還有一個文件結束標志EOF(End Of File),例如:
字節值:41 42 43 41 42 61 EOF
位置:1 2 3 4 5 6 7
指針: |
文件指針在對一個位置進行讀或者寫操作之后會自動加1,移動到下一個位置,直到指向EOF位置,則不能讀出任何文件字節.
文件指針:
# 文件指針 f = open('abc.txt','wt') print(f.tell()) f.write('abc') print(f.tell()) f.write('我們') print(f.tell()) f.close其結果是:
0 3 7 <function TextIOWrapper.close()>文件的使用方式:
# 讀寫文件 def writeFile():f = open('abc.txt','wt')print(f.tell())f.write('abc')print(f.tell())f.seek(2,0)print(f.tell())f.write('123')print(f.tell())f.close def readFile():f = open('abc.txt','rt+')print(f.read())f.close()try:writeFile()readFile() except Exception as e:print(e)其結果是:
0 3 2 5 ab1236.二進制文件
文件的本質是二進制字節數據,所有的文件都是二進制文本,文本文件只是在讀寫時做了編碼轉換。 文件使用方式:
rt:read txt,只讀打開一個文本文件,只允許讀取數據。如果文件存在,則打開后可以按順序讀,如果文件不存在,則打開失敗。
wt:write txt,只寫打開或建立一個文本文件,只允許寫數據。如果文件不存在,則建立一個空文件;如果文件已經存在,就把原文件內容清空。
at:append txt,追加打開一個文本文件,并在文件末尾寫數據。如果文件不存在,則建立一個空文件;如果文件已存在,則把原文件打開并保持原內容不變,文件位置指針指向末尾,新寫入的數據追加在文件末尾。
rt+:讀寫方式打開一個文本文件,允許讀也允許寫數據,如文件存在,則打開后文件指針在開始位置,如文件不存在,則打開失敗。
wt+:讀寫方式打開一個文本文件,允許讀也允許寫數據,如文件不存在,則就創建該文件;如文件存在,則打開后清空文件內容,文件指針指向0的開始位置。
at+:讀寫方式打開一個文本文件,允許讀也允許寫數據,如文件不存在,則就創建該文件;如文件存在,則打開后不清空文件內容,文件指針指向文件的末尾位置。
其結果是:
0x61 0x62 0x63 0xce 0xd2 0xc3 0xc7 ---------- 0x61 0x62 0x63 0xce 0xd2 0xc3 0xc7總結
以上是生活随笔為你收集整理的python程序基础知识(五)python文本文件操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 服务器上的SDR传感器状态,ipmito
- 下一篇: 【Python编程】九、Python文件