一、文件的操作
1、打開一個文件
語法:
open(filename,mode)
解釋:
filename:代表你要訪問的文件名
mode:這里代表你打開文件的模式,有 只讀,寫入,讀寫,追加等模式;默認為只讀模式。
我們可以看下面的列表:

1、讀模式 r 以只讀方式打開文件。文件的指針將會放在文件的開頭。這是默認模式
例子:
f = open("foo.txt", "r",encoding="UTF-8") #只讀的方式打開的文件,encoding是轉碼的意思,告訴解釋器,是以UTF-8的格式 i=f.read() # 讀取文件,bing 賦值給i print(i) #打印i f.close() #關閉文件夾 #輸出如下: C:\Python35\python.exe D:/linux/python/all_test/listandtup.py Python 是一個非常好的語言。 是的,的確非常好!!
2、讀寫模式 r+ 打開一個文件用於讀寫。文件指針將會放在文件的開頭。
例子:
f = open("foo.txt", "r+",encoding="UTF-8") #讀寫的方式打開的文件,encoding是轉碼的意思,告訴解釋器,是以UTF-8的格式 i=f.read() # 讀取文件,bing 賦值給i print(i) #打印i f.write("我要學Python\n") #寫入 # f.flush() f.close() #關閉文件夾 輸出: C:\Python35\python.exe D:/linux/python/all_test/listandtup.py 我要學Python 我要學Python
3、寫模式 w 打開一個文件只用於寫入。如果該文件已存在則將其覆蓋。如果該文件不存在,創建新文件
例子:
f = open("foo.txt", "w",encoding="UTF-8") #寫的方式打開的文件,encoding是轉碼的意思,告訴解釋器,是以UTF-8的格式 f.write("我要學Python\n") #寫入,文件夾存在覆蓋,不存在創建 f.close() #關閉文件夾
4、讀寫模式 w+ 打開一個文件用於讀寫。如果該文件已存在則將其覆蓋。如果該文件不存在,創建新文件
例子:
f = open("foo.txt", "w+",encoding="UTF-8") #寫的方式打開的文件,encoding是轉碼的意思,告訴解釋器,是以UTF-8的格式 f.write("我要學Python\n") #寫入,文件夾存在覆蓋,不存在創建 print("定位之前的光標位置:%s" % (f.tell())) f.flush() #刷新文件使內存的內容刷新至文件夾 f.seek(0) #因為W+讀取文件之后會定位在文件尾部,所以需要重新定位一下光標位置,要不無法讀取 print("定位之后的光標位置:%s" % (f.tell())) i = f.read() print(i) f.close() #關閉文件夾 輸出: C:\Python35\python.exe D:/linux/python/all_test/listandtup.py 定位之前的光標位置:17 定位之后的光標位置:0 我要學Python
5、追加 a 打開一個文件用於追加。如果該文件已存在,文件指針將會放在文件的結尾。也就是說,新的內容將會被寫入到已有內容之后。如果該文件不存在,創建新文件進行寫入
例子:
f = open("foo.txt", "a",encoding="UTF-8") #追加方式打開的文件,encoding是轉碼的意思,告訴解釋器,是以UTF-8的格式 f.write("我要學Python\n") #寫入,文件夾存在追加,不存在創建 print("定位之前的光標位置:%s" % (f.tell())) f.seek(0) #因為a追加文件之后會定位在文件尾部,所以需要重新定位一下光標位置,要不無法讀取 print("定位之后的光標位置:%s" % (f.tell())) f.close() #關閉文件夾
6、追加讀 a+打開一個文件用於讀寫。如果該文件已存在,文件指針將會放在文件的結尾。文件打開時會是追加模式。如果該文件不存在,創建新文件用於讀寫。
例子:
f = open("foo.txt", "a+",encoding="UTF-8") #追加讀方式打開的文件,encoding是轉碼的意思,告訴解釋器,是以UTF-8的格式 f.write("我要學Python\n") #寫入,文件夾存在創建,不存在創建 print("定位之前的光標位置:%s" % (f.tell())) f.flush() #刷新文件使內存的內容刷新至文件夾 f.seek(0) #因為W+讀取文件之后會定位在文件尾部,所以需要重新定位一下光標位置,要不無法讀取 print("定位之后的光標位置:%s" % (f.tell())) i = f.read() print(i) f.close() #關閉文件夾 輸出: C:\Python35\python.exe D:/linux/python/all_test/總練習.py 定位之前的光標位置:136 定位之后的光標位置:0 我要學Python 我要學Python 我要學Python 我要學Python 我要學Python
二、文件的操作方法
文件的常用方法有13種,如下圖:


文件的file.close、file.flush、file.seek、file.tell在前面文件的讀、寫、追加已經介紹過了這里就不一一說了,下面我們說一下剩余的幾種方法吧!
1、fileno() 方法返回一個整型的文件描述符(file descriptor FD 整型),可用於底層操作系統的 I/O 操作
語法:
fileObject.fileno()
返回值:文件描述符
例子:
f = open("foo.txt", "a+",encoding="UTF-8") #追加讀方式打開的文件,encoding是轉碼的意思,告訴解釋器,是以UTF-8的格式 fid = f.fileno() print("文件的描述符為:",fid) f.close() #關閉文件夾 輸出: C:\Python35\python.exe D:/linux/python/all_test/總練習.py 文件的描述符為: 3
2、next() 返回文件的下一行
語法:
next(iterator[,default])
例子:
# 打開文件 fo = open("foo.txt", "r",encoding="UTF-8") print ("文件名為: ", fo.name) for index in range(5): line = next(fo) print ("第 %d 行 - %s" % (index, line)) # 關閉文件 fo.close() #輸出 # C:\Python35\python.exe D:/linux/python/all_test/總練習.py # 文件名為: foo.txt # 第 0 行 - 我要學Python0 # 第 1 行 - 我要學Python1 # 第 2 行 - 我要學Python2 # 第 3 行 - 我要學Python3 # 第 4 行 - 我要學Python4
3、read方法:用於從文件讀取指定的字節數,如果為給定或為負則讀取所有
語法:
fileObject.read()
例子:
fo = open("foo.txt", "r",encoding="UTF-8") print ("文件名為: ", fo.name) line = fo.read() #不指定字符節讀取所有 print(line) fo.close() # 關閉文件 # 如下: # C:\Python35\python.exe D:/linux/python/all_test/總練習.py # 文件名為: foo.txt # 我要學Python0 # 我要學Python1 # 我要學Python2 # 我要學Python3 # 我要學Python4 # 我要學Python5 =========================================== fo = open("foo.txt", "r",encoding="UTF-8") print ("文件名為: ", fo.name) line = fo.read(16) #指定讀取16字節 print(line) fo.close() # 關閉文件 #如下: # C:\Python35\python.exe D:/linux/python/all_test/總練習.py # 文件名為: foo.txt # 我要學Python0 # 我要學Py
4、readline() 方法用於從文件讀取整行,包括 "\n" 字符。如果指定了一個非負數的參數,則返回指定大小的字節數,包括 "\n" 字符。
語法:
fileObject.readline()
例子:
fo = open("foo.txt", "r",encoding="UTF-8") print ("文件名為: ", fo.name) line = fo.readline(3) #指定讀取16字節 print("讀取指定的字符串為:%s" % (line)) print("光標現在的位置:%s" %(fo.tell())) fo.seek(0,0) #之所以用這個是因為前面已經讀了16個字符了所以要把光標調到0 的位置 print("調整后光標的位置:%s" %(fo.tell())) line = fo.readline() #讀取第一行 print("讀取第一行:%s" % (line)) fo.close() # 關閉文件 #如下: # C:\Python35\python.exe D:/linux/python/all_test/總練習.py # 文件名為: foo.txt # 讀取指定的字符串為:我要學 # 光標現在的位置:9 # 調整后光標的位置:0 # 讀取第一行:我要學Python0
5、readlines() 方法用於讀取所有行(直到結束符 EOF)並返回列表,若給定sizeint>0,返回總和大約為sizeint字節的行, 實際讀取值可能比sizhint較大, 因為需要填充緩沖區。如果碰到結束符 EOF 則返回空字符串。
語法:
fileObject.readlines()
例子:
fo = open("foo.txt", "r",encoding="UTF-8") print ("文件名為: ", fo.name) line = fo.readlines(3) #指定讀取3字節 print("讀取指定的字符串為:%s" % (line)) for line in fo.readlines(): line = line.strip("\n") #使用strip去掉換行符/n print("讀取所有行:%s" % (line)) fo.close() # 關閉文件 輸出如下: C:\Python35\python.exe D:/linux/python/all_test/總練習.py 文件名為: foo.txt 讀取指定的字符串為:['我要學Python0\n'] 讀取所有行:我要學Python1 讀取所有行:我要學Python2 讀取所有行:我要學Python3 讀取所有行:我要學Python4 讀取所有行:我要學Python5 讀取所有行:我要學Python6 讀取所有行:我要學Python7
6、truncate() 方法用於截斷文件,如果指定了可選參數 size,則表示截斷文件為 size 個字符。 如果沒有指定 size,則重置到當前位置。
語法:
fileObject.truncate( [ size ])
例子:
fo = open("foo.txt", "r+",encoding="UTF-8") line = fo.readline() print ("讀取行: %s" % (line)) fo.truncate() line = fo.readlines() print ("讀取行: %s" % (line)) fo.close() # 關閉文件 輸出: C:\Python35\python.exe D:/linux/python/all_test/總練習.py 讀取行: 我要學Python1 讀取行: ['我要學Python2\n', '我要學Python3\n', '我要學Python4'] ========================================== fo = open("foo.txt", "r+",encoding="UTF-8") fo.truncate(10) #截取10個字符,其余的清空 line = fo.read() print ("讀取的數據: %s" % (line)) fo.close() # 關閉文件 輸出如下: C:\Python35\python.exe D:/linux/python/all_test/總練習.py 讀取的數據: 我要學P
7、writelines() 方法用於向文件中寫入一序列的字符串,這一序列字符串可以是由迭代對象產生的,如一個字符串列表,換行需要制定換行符 \n。
語法
writelines() 方法語法如下:
fileObject.writelines( [ str ])
例子:
fo = open("foo.txt", "a+",encoding="UTF-8") seq = ["我要學Python 1\n", "我要學Python 2"] fo.writelines( seq ) fo.flush() fo.seek(0,0) #跳到行首 line = fo.readlines() #讀取所有行 print ("讀取的數據: %s" % (line)) fo.close() # 關閉文件 輸出: C:\Python35\python.exe D:/linux/python/all_test/總練習.py 讀取的數據: ['我要學Python 1\n', '我要學Python 2']
OK,file的基本操作,就結束了,睡覺了。
