045 文件的使用

1、概述

  • 文件的類型
  • 文件的打開和關閉
  • 文件內容的讀取
  • 數據的文件寫入

2、文件的類型

2.1 文件的理解

文件是數據的抽象和集合編碼

  • 文件是存儲在輔助存儲器上的數據序列
  • 文件是數據存儲的一種形式
  • 文件展示形態:文本文件和二進制文件

文本文件 vs. 二進制文件3d

  • 文件文件和二進制文件只是文件的展現方式
  • 本質上,全部文件都是二進制形式存儲
  • 形式上,全部文件採用兩種方式展現

2.2 文本文件

文件是數據的抽象和集合指針

  • 由單一特定編碼組成的文件,如UTF-8編碼
  • 因爲存在編碼,也被當作是存儲着的長字符串
  • 適用於例如:.txt文件、.py文件等

2.3 二進制文件

文件是數據的抽象和集合code

  • 直接由比特0和1組成,沒有統一字符編碼
  • 通常存在二進制0和1的組織結構,即文件格式
  • 適用於例如:.png文件、.avi文件等

2.4 文本文件 vs. 二進制文件

"中國是個偉大的國家!"blog

  • 文本形式:中國是個偉大的國家!
  • 二進制形式:b'\xd6\xd0\xb9\xfa\xca\xc7\xb8\xf6\xce\xb0\xb4\xf3\xb5\xc4\xb9\xfa\xbc\xd2\xa3\xa1'

2.5 f.txt文件保存

f.txt文件保存: "中國是個偉大的國家!"字符串

# 文本形式打開文件
tf = open("f.txt", "rt")
print(tf.readline())
tf.close()
# 二進制形式打開文件
bf = open("f.txt", "rb") 
print(bf.readline()) 
bf.close()

3、文件的打開和關閉

3.1 文件的打開關閉

文件處理的步驟: 打開-操做-關閉input

45-文件的使用-01.jpg?x-oss-process=style/watermark

# 讀文件
a.read(size)
a.readline(size)
a.readlines(hint)
# 寫文件
a.write(s)
a.writelines(lines)
a.seek(offset)

3.2 文件的打開

45-文件的使用-02.jpg?x-oss-process=style/watermark

3.3 文件路徑

文件路徑和名稱:"D:/PYE/f.txt" 或 "D:\PYE\f.txt"it

源文件同目錄可省路徑:"./PYE/f.txt" 或 "f.txt"字符編碼

3.4 打開模式

文件的打開模式 描述
'r' 只讀模式,默認值,若是文件不存在,返回FileNotFoundError
'w' 覆蓋寫模式,文件不存在則建立,存在則徹底覆蓋
'x' 建立寫模式,文件不存在則建立,存在則返回FileExistsError
'a' 追加寫模式,文件不存在則建立,存在則在文件最後追加內容
'b' 二進制文件模式
't' 文本文件模式,默認值
'+' 與r/w/x/a一同使用,在原功能基礎上增長同時讀寫功能
  • 文本形式、只讀模式、默認值:f = open("f.txt")
  • 文本形式、只讀模式、同默認值:f = open("f.txt", "rt")
  • 文本形式、覆蓋寫模式:f = open("f.txt", "w")
  • 文本形式、追加寫模式+ 讀文件:f = open("f.txt", "a+")
  • 文本形式、建立寫模式:f = open("f.txt", "x")
  • 二進制形式、只讀模式:f = open("f.txt", "b")
  • 二進制形式、覆蓋寫模式:f = open("f.txt"):f = open("f.txt", "wb")

3.5 文件的關閉

<變量名>.close() # 變量名爲文件句柄

3.6 文件使用

# 文本形式打開文件
tf = open("f.txt", "rt")
print(tf.readline()) 
tf.close()
# 二進制形式打開文件
bf = open("f.txt", "rb")
print(bf.readline()) 
bf.close()

4、文件內容的讀取

操做方法 描述
<f>.read(size=-1) 讀入所有內容,若是給出參數,讀入前size長度,s = f.read(2) # 中國
<f>.readline(size=-1) 讀入一行內容,若是給出參數,讀入該行前size長度,s = f.readline() # 中國是一個偉大的國家!
<f>.readlines(hint=-1) 讀入文件全部行,以每行爲元素造成列表若是給出參數,讀入前hint行,s = f.readlines() # ['中國是一個偉大的國家!']

4.1 文件的全文本操做

4.1.1 遍歷全文本:方法一

一次讀入,統一處理

fname = input("請輸入要打開的文件名稱:") 
fo = open(fname,"r")
txt = fo.read()
# 對全文txt進行處理
fo.close()

4.1.2 遍歷全文本:方法二

按數量讀入,逐步處理

fname = input("請輸入要打開的文件名稱:")
fo = open(fname,"r")
txt = fo.read(2)
while txt != "":
    # 對txt進行處理
    txt = fo.read(2)
    
fo.close()

4.2 文件的逐行操做

4.2.1 逐行遍歷文件:方法一

一次讀入,分行處理

fname = input("請輸入要打開的文件名稱:")
fo = open(fname,"r")
for line in fo.readlines():
    print(line) 
fo.close()

4.2.2 逐行遍歷文件:方法二

分行讀入,逐行處理

fname = input("請輸入要打開的文件名稱:")
fo = open(fname,"r")
for line in fo:
    print(line)
fo.close()

5、數據的文件寫入

操做方法 描述
<f>.write(s) 向文件寫入一個字符串或字節流,f.write("中國是一個偉大的國家!")
<f>.writelines(lines) 將一個元素全爲字符串的列表寫入文件,ls = ["中國", "法國", "美國"];f.writelines(ls) # 中國法國美國
<f>.seek(offset) 改變當前文件操做指針的位置,offset含義以下: 0 – 文件開頭; 1 – 當前位置; 2 – 文件結尾,f.seek(0) # 回到文件開頭

寫入一個字符串列表

fo = open("output.txt","w+") 
ls = ["中國", "法國", "美國"]
fo.writelines(ls) 
for line in fo:
    print(line)  # (沒有任何輸出)
fo.close()

寫入一個字符串列表

fo = open("output.txt","w+")
ls = ["中國", "法國", "美國"] 
fo.writelines(ls)
fo.seek(0)
for line in fo:
    print(line)  # 中國法國美國
fo.close()

6、單元小結

  • 文件的使用方式:打開-操做-關閉
  • 文本文件&二進制文件,open( , )和.close()
  • 文件內容的讀取:.read() .readline() .readlines()
  • 數據的文件寫入:.write() .writelines() .seek()
相關文章
相關標籤/搜索