目錄
簡介
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文件如圖所示
a追加模式
f = open(r'D:\Pthon Project\代碼\代碼\\第7章\a.txt', 'a', encoding = 'utf-8')
f.write('提高辦公效率')
f.close()
對a文件追加寫,運行前a文件內容如下圖1所示,執行代碼可以看出寫入了“提高辦公效率”,結果發現寫在了a文件的後面
對於這三種基礎模式,還有兩個可能會遇到的模式,一個是“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
文件內容:
(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文件時,每一個數據佔據一個單元格,每一個數據所佔到單元格位置由逗號決定。
記事本打開
Excel打開: