目錄

簡介

1.文件

2.操作文件

1.打開文件

(1.)打開模式

(2.)open函數的複合寫法

2.讀取文件

(1.)read()方法:

(2.)readline()方法:

(3.)readlines()方法:

(4.)for循環遍歷

3.寫入文件

(1.)write()方法

(2.) writelines()方法

3.文件的讀取位置和路徑

1.調整文件的讀取位置

2.絕對路徑與相對路徑

4.csv文件

簡介

在 Python 編程的世界裏,數據的存儲與讀取是至關重要的環節,而文件操作正是實現這一環節的核心技能。無論是處理文本數據、保存程序運行結果,還是讀取配置信息,都離不開對文件的靈活操作。通過本節課的學習,你將掌握 Python 文件操作的核心技巧,能夠輕鬆地與各種文件進行交互,為後續處理更復雜的數據打下堅實的基礎。

1.文件

一個文件由3部分組成,分別是文件的保存路徑、文件類型、文件的內容。而計算機本質上只能處理0和1組成的二進制數字,使用編碼技術(密碼本)將內容翻譯成0和1存入。計算機中有許多可用編碼: UTF-8、 GBK、 Big5 等 不同的編碼,將內容翻譯成二進制也是不同的。UTF-8是目前全球通用的編碼格式 除非有特殊需求,否則,一律以UTF-8格式進行文件編碼即可。一般文件裏面有中文就使用UTF-8,如果是全英文就使用GBK進行編碼。

2.操作文件

文件的操作同城包含3個步驟,即打開文件、操作文件、關閉文件。

1.打開文件

Python中通常使用open()函數來打開一個文件,其使用形式如下:

open(file,mode='r',buffering=-1,encoding=None,errors=None,newline=None,
closefd=Ture,opener=None)

功能:打開一個文件。這裏的打開文件與在操作系統中打開文件的概念不同,這裏的打開文件是與文件建立通道並獲取操作文件的權限。

參數’file‘:需要打開的文件路徑(包含路徑和完整文件夾名),其數據類型為字符串類型。

參數’mode‘:指明文件打開的模式

參數‘encoding’:編碼格式,推薦使用UTF-8,encoding的順序不是第三位,所以不能用位置參數,用關鍵字參數直接指定

這裏主要介紹這三個參數,其他參數一般直接默認就行,open函數給定上面三個參數就足夠了

(1.)打開模式

打開模式也就是mode的參數,具有三種基本訪問方式r、w、a三種

模式

描述

r

以只讀方式打開文件。文件的指針將會放在文件的開頭。這是默認模式。

w

打開一個文件只用於寫入。如果該文件已存在則打開文件,並從開頭開始編輯,原有內容會被刪除。如果該文件不存在,創建新文件。

a

打開一個文件用於追加。如果該文件已存在,新的內容將會被寫入到已有內容之後。如果該文件不存在,創建新文件進行寫入。

b

二進制模式,可放在r/w等模式後面,如(wb:二進制覆蓋寫模式)

r只讀模式

f = open('E:\書代碼\第7章\n.txt','r')
print(f)

w覆蓋寫模式

for i in range(1,11):
    path = r'D:\Pthon Project\代碼\代碼\第7章'+str(i)+'.txt'
    f = open(path,'w')
    f.close()

循環十次就會創建十個txt文件如圖所示

Python基礎_6_文件_m0_#前端

a追加模式

f = open(r'D:\Pthon Project\代碼\代碼\\第7章\a.txt', 'a', encoding = 'utf-8')
f.write('提高辦公效率')
f.close()

對a文件追加寫,運行前a文件內容如下圖1所示,執行代碼可以看出寫入了“提高辦公效率”,結果發現寫在了a文件的後面

Python基礎_6_文件_m0_數據_02

Python基礎_6_文件_m0_#python_03

對於這三種基礎模式,還有兩個可能會遇到的模式,一個是“x”創建寫模式,一個是“+”增加模式

“x”創建寫模式會創建一個新文件並給定新文件寫入權限。

+”增加模式此模式需要與’r’w’x’a’模式中的一種結合使用,表示在原有模式基礎上增加讀寫權限

(2.) open函數的複合寫法

open()函數還有一種複合寫法,可以避免用户因忘記使用clo se)方法關閉文件而導致的程序異常等問題。open()函數的複合寫法其使用形式如下:

with open(參數) as 變量名:

with:是Python中的保留字,是一種上下文管理器,可以自動管理文件,無須再使用close()方法來進行文件的關閉操作。
as:是Python中的保留字,與with結合使用。
open()函數的使用形式與之前介紹的一致。變量名即文件打開後的賦值變量名,與以上示例代碼中變量f的含義相同,需要注意的是,在複合寫法的最後有一個“:”且對文件進行操作的代碼都需要縮進(縮進要求與)含義相同。

2.讀取文件

讀取文件內容前需要確定文件的打開模式是否為只讀模式(r),如果是則可以使用文件對象中的read()、readline()、readlines()方法讀取文件內的信息。

(1.)read()方法:
文件對象.read(size=-1)

參數size:表示要從文件中讀取的數據的長度(單位是字節),如果沒有傳入size,那麼就表示讀取文件中所有的數據。

代碼1

f = open('D:\Pthon Project\代碼\代碼\第7章\編程語言概述.txt','r',encoding='utf-8')
print(f.read())
f.close()

read中沒有參數,對文件讀取全部數據,運行結果如下:

由於計算機不能識別人類語言,因此用户(人)與計算機交互的過程往往是通過程序的操作來實現的。
程序是計算機理解用户操作意圖的途徑,而程序是由編程語言來編寫實現的,即使用編程語言規範地編寫代碼以實現特定的功能,讓計算機按照代碼來執行相應的操作。因此編程語言是人與計算機相互溝通的基礎。

代碼2

f = open(r'D:\Pthon Project\代碼\代碼\第7章\編程語言概述.txt','r',encoding='utf-8')
a = f.read(10)   #從文件中讀取size個字符的內容
print(a,type(a))
f.close()

read裏面傳入一個10,就是讀取文件的前10個字符,然後輸出讀取的10個字符是什麼類型的數據,結果如下:

由於計算機不能識別人 <class 'str'>
(2.)readline()方法:

readline()使用形式:

readline(size=-1)

參數size:默認從文件一次讀取一行內容,如果size為其他值,則讀取該行前size個字符。

f = open(r'D:\Pthon Project\代碼\代碼\第7章\編程語言概述.txt', 'r', encoding='utf-8')
print(f.readline())
f.close()
#運行結果:由於計算機不能識別人類語言,因此用户(人)與計算機交互的過程往往是通過程序的操作來實現的。
(3.)readlines()方法:

readlines可以按照行的方式把整個文件中的內容進行一次性讀取,並且返回的是一個列表,其中每一行的數據為一個元素。使用形式:

readlines(hint=-1)

參數hint:獲取所在行內容的hint個字符,如果第一行有5個字符,hint=5,就只讀去第一行內容。第2行如果有5個字符, hint=6,會讀取第1行和第2行內容(5<hint≤11時會讀取前兩行內容)。

f = open(r'D:\Pthon Project\代碼\代碼\第7章\編程語言概述.txt','r',encoding='utf-8')
print(f.readlines())    #從文件中讀取所有內容,以列表返回,每行為列表中的一個元素
f.close()
# 運行結果為:['由於計算機不能識別人類語言,因此用户(人)與計算機交互的過程往往是通過程序的操作來實現的。\n', 
# '程序是計算機理解用户操作意圖的途徑,而程序是由編程語言來編寫實現的,即使用編程語言規範地編寫代碼以實現特定的功能,讓計算機按照代碼來執行相應的操作。因此編程語言是人與計算機相互溝通的基礎。\n']
(4.)for循環遍歷

讀取文件內容還可以通過for循環遍歷發方式來實現

f = open(r'D:\Pthon Project\代碼\代碼\第7章\編程語言概述.txt','r',encoding='utf-8')
for line in f:    #遍歷文件
    print(line)
f.close()

運行結果為:

由於計算機不能識別人類語言,因此用户(人)與計算機交互的過程往往是通過程序的操作來實現的。

程序是計算機理解用户操作意圖的途徑,而程序是由編程語言來編寫實現的,即使用編程語言規範地編寫代碼以實現特定的功能,讓計算機按照代碼來執行相應的操作。因此編程語言是人與計算機相互溝通的基礎

3.寫入文件

寫入文件的方法有write(參數)和writelines(參數)

(1.) write()方法

write()方法的使用形式:

write(text)

把字符串text寫入文件,返回值是寫入的字符串數(字符串的長度)

f = open(r'D:\Pthon Project\代碼\代碼\第7章\編程語言概述.txt','w',encoding='utf-8')
print(f.write('我正在學習Python'))
f.close()
#運行結果為:11

文件內容:

Python基礎_6_文件_m0_#前端_04

(2.)writelines()方法

writelines()方法的使用形式為:

writelines(lines)

把字符串列表(列表中元素均為字符串)寫入文件,且不添加換行符。參數lines 表示字符串列表,返回值為None表示空

f = open(r'D:\Pthon Project\代碼\代碼\第7章\編程語言概述.txt','w',encoding='utf-8')
ls = ['zhangsan','lisi','wangwu']
print(f.writelines(ls))
f.close()
#運行結果為None

3.文件的讀取位置和路徑

1.調整文件的讀取位置

當讀取到文件末尾,需要跳轉到文件開頭重新讀取時,或當寫入到文件末尾,需要重新在文件開頭寫入內容時可以使用seek()方法。

seek(cookie,whence=0)

功能:把文件指針移到新的位置上

參數cookie:表示相對於whence位置的偏移量,如果為正數表示向右偏移,如果是負數表示向左偏移一個漢字的偏移量是3。
參數whence:表示文件指針設定的位置,默認值為0,表示從文件開頭處開始計算,值為1表示從當前位置開始計算,值為2表示從文件結尾處開始計算。

2.絕對路徑與相對路徑

絕對路徑表示從磁盤的根目錄開始到目標文件的路徑,相對路徑表示相當於目前文件的位置到目標文件的位置。

4.csv文件

csV文件是一種逗號分隔式字符文件,可以被大部分的軟件直接識別,例如記事本或Excel均可直接打開,CSV文件的特點是每個數據之間使用逗號分隔開。用Excel打開csv文件時,每一個數據佔據一個單元格,每一個數據所佔到單元格位置由逗號決定。

記事本打開

Python基礎_6_文件_m0_編程語言_05

Excel打開:

Python基礎_6_文件_m0_#python_06