筆記主要由來于 慕課網(wǎng) Python 語言程序設(shè)計
1.文件的理解
2.文件的打開關(guān)閉
3.文件內(nèi)容的讀取
- 數(shù)據(jù)的文件寫入
1.文件的理解
文件是數(shù)據(jù)的抽象和集合
- 文件是存儲在輔助存儲器上的數(shù)據(jù)序列
- 文件是數(shù)據(jù)存儲的一種形式
- 文件展現(xiàn)形態(tài):文本文件和二進制文件
文本文件 vs. 二進制文件
- 文本文件和二進制文件只是文件的展示方式
- 本質(zhì)上帽芽,所有的文件都是二進制形式存儲
- 形式上矫废,所有文件采用兩種方式展示
1.1文本文件
文件是數(shù)據(jù)的抽象和集合
- 由單一特定編碼組成的文件嫉晶,如 UTF-8編碼
- 由于存在編碼常挚,也被看成是存儲這的長字符串
- 適用于例如:.txt文件、.py文件
1.2二進制文件
- 直接由比特0和1組成,沒有統(tǒng)一字符編碼
- 一般存在二進制0和1的組織結(jié)構(gòu)盾剩,即文件格式
- 適用于例如:.png文件雷激、 .avi文件等
2.文件的打開關(guān)閉
文件處理的步驟:打開---操作---關(guān)閉
2.1文件的打開
<變量名> = open(<文件名>,<打開模式>)
變量名:文件句柄(文件抽象變量)
文件名:文件路徑和名稱(源文件用目錄可以省略)
打開模式:文本 or 二進制 讀信息 or 寫信息
文件路徑
<變量名> = open(<文件名>,<打開模式>)
文件位置:
D:\PythonPractice\.idea\Practice\f.txt
文件名:(源文件同目錄可省略路徑)
絕對路徑
"D:\\PythonPractice\\.idea\\Practice\\f.txt"
或 "D:/PythonPractice/.idea/Practice/f.txt"
相對路徑:(打開的文件與當前程序之間的路徑)
若當前的程序存儲在D盤根目錄下
"./PythonPractice/.idea/Practice/f.txt"
打開文件和當前程序在相同目錄下
"f.txt"
2.2打開模式
'r' 只讀模式替蔬,默認值告私,如果文件不存在,則返回FileNotFoundError(使用try expect 捕捉處理)
'w' 覆蓋模式承桥,文件不存在則創(chuàng)建文件驻粟,存在則完全覆蓋
'x' 創(chuàng)建寫模式,文件不存在則創(chuàng)建,存在則返回FilExistssError
'a' 追加寫模式,文件不存在則創(chuàng)建咱筛,存在則在文件最后追加內(nèi)容眉踱,不會更改文件之前內(nèi)容
'b' 二進制文件模式
't' 文本文件,默認值
'+' 與 r/w/x/a 一同使用句灌,在原功能基礎(chǔ)上增加同時讀寫功能
f = open("f.txt") - 文本形式、只讀模式、默認值
f = open("f.txt", "rt") - 文本形式沃饶、只讀模式、通默認值
f = open("f.txt", "w") - 文本形式轻黑、覆蓋寫模式
f = open("f.txt", "a+") - 文本形式糊肤、追加寫模式 + 讀文件
f = open("f.txt", "x") - 文本形式、創(chuàng)建寫模式
f = open("f.txt", "b") - 二進制形式氓鄙、只讀模式
f = open("f.txt", "wb") - 二進制模式馆揉、覆蓋寫模式
2.3文件的關(guān)閉
<文件名> .colse()
若不寫此句話,程序執(zhí)行時此文件處于打開狀態(tài)抖拦,程序退出時python解釋器會關(guān)閉此文件
3.文件內(nèi)容的讀取
<f>.read(size = -1) 讀取全部內(nèi)容升酣,如果給出參數(shù),讀入前size長度
<f>.readline(size= -1) 讀入一行內(nèi)容态罪,如果給出參數(shù)拗踢,讀入改行前size長度
<f>.readlines(hint= -1) 讀入文件所有行,以每行為元素形成列表向臀,如果給出參數(shù)巢墅,讀入前hint行
>>> tf = open("D:/PythonPractice/.idea/Practice/f.txt","rt")
>>> a = tf.read()
>>> print(a)
中國是一個偉大的國家!
世界和平券膀!
>>> tf = open("D:/PythonPractice/.idea/Practice/f.txt","rt")
>>> s = tf.read(2)
>>> print(s)
中國
>>> tf = open("D:/PythonPractice/.idea/Practice/f.txt","rt")
>>> a = tf.readline()
>>> print(a)
中國是一個偉大的國家君纫!
>>> tf = open("D:/PythonPractice/.idea/Practice/f.txt","rt")
>>> s1 = tf.readline(5)
>>> print(s1)
中國是一個
>>> f = open("D:/PythonPractice/.idea/Practice/f.txt","rt")
>>> c = tf.readlines()
>>> print(c)
['偉大的國家!\n', '世界和平芹彬!']
>>> f = open("D:/PythonPractice/.idea/Practice/f.txt","rt")
>>> s2 = f.readlines(2)
>>> print(s2)
['中國是一個偉大的國家蓄髓!\n']
3.1遍歷全體文本
# 遍歷全文本:方法一
fname = input("請輸入要打開的文件名稱:")
fo = open(fname, "r")
txt = fo.read()
# 對文本txt進行處理
fo.close()
# 一次讀入,統(tǒng)一處理
# 弊端:大文件舒帮,一次讀入內(nèi)存会喝,浪費時間資源
# 遍歷全文本:方法一
fname = input("請輸入要打開的文件名稱:")
fo = open(fname, "r")
txt = fo.read(2)
while txt != "":
# 對txt進行處理
txt = fo.read(2)
fo.close()
# 按數(shù)量讀入陡叠,分階段,逐步處理
3.2逐行遍歷文件
# 逐行遍歷文件 :方法一
fname = input("請輸入要打開的文件名稱:")
fo = open(fname,"r")
for line in fo.readlines():
print(line)
fo.close()
# 一次讀入肢执,分行處理
# 逐行遍歷文件 :方法二
fname = input("請輸入要打開的文件名稱:")
fo = open(fname,"r")
for line in fo:
print(line)
fo.close()
# 分行讀入枉阵,逐步處理
4. 數(shù)據(jù)的文件寫入
<f>.write(s) 向文件寫入一個字符串或字節(jié)流
<f>.writdlines(lines) 將一個元素為字符串的列表寫入文件
<f>.seek(offset) 改變當前文件操作指針的位置,
offset:0 文件開頭
1 當前位置
2 文件結(jié)尾
fo = open("output.txt","w+")
ls = ["中國","法國","美國"]
fo.writelines(ls)
fo.seek(0)
for line in fo :
print(line)
fo.close()
中國法國美國