程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python-文件常用函數-讀文件-寫文件-定位文件

編輯:Python

文章目錄

    • 1.常用函數
      • 1.1.open函數
      • 1.2.讀取模式
    • 2.讀文件
      • 2.1直接打開就讀
      • 2.2.read()讀取
      • 2.3.readlines()讀取
      • 2.4.readline()讀取
    • 3.寫文件
    • 4.關閉文件
    • 5.文件定位
    • 6.作者答疑

讀寫文件是最常見的IO操作。Python內置了讀寫文件的函數,用法和C是兼容的。

1.常用函數

1.1.open函數

file object = open(file_name [, access_mode][, buffering])
file_name:file_name變量是一個包含了你要訪問的文件名稱的字符串值。
access_mode:access_mode決定了打開文件的模式:只讀,寫入,追加等。所有可取值見如下的完全列表。這個參數是非強制的,默認文件訪問模式為只讀(r)。
buffering:如果buffering的值被設為0,就不會有寄存。如果buffering的值取1,訪問文件時會寄存行。如果將buffering的值設為大於1的整數,表明了這就是的寄存區的緩沖大小。如果取負值,寄存區的緩沖大小則為系統默認。

1.2.讀取模式

模式描述t文本模式 (默認)。x寫模式,新建一個文件,如果該文件已存在則會報錯。b二進制模式。+打開一個文件進行更新(可讀可寫)。U通用換行模式(不推薦)。r以只讀方式打開文件。文件的指針將會放在文件的開頭。這是默認模式。rb以二進制格式打開一個文件用於只讀。文件指針將會放在文件的開頭。這是默認模式。一般用於非文本文件如圖片等。r+打開一個文件用於讀寫。文件指針將會放在文件的開頭。rb+以二進制格式打開一個文件用於讀寫。文件指針將會放在文件的開頭。一般用於非文本文件如圖片等。w打開一個文件只用於寫入。如果該文件已存在則打開文件,並從開頭開始編輯,即原有內容會被刪除。如果該文件不存在,創建新文件。wb以二進制格式打開一個文件只用於寫入。如果該文件已存在則打開文件,並從開頭開始編輯,即原有內容會被刪除。如果該文件不存在,創建新文件。一般用於非文本文件如圖片等。w+打開一個文件用於讀寫。如果該文件已存在則打開文件,並從開頭開始編輯,即原有內容會被刪除。如果該文件不存在,創建新文件。wb+以二進制格式打開一個文件用於讀寫。如果該文件已存在則打開文件,並從開頭開始編輯,即原有內容會被刪除。如果該文件不存在,創建新文件。一般用於非文本文件如圖片等。a打開一個文件用於追加。如果該文件已存在,文件指針將會放在文件的結尾。也就是說,新的內容將會被寫入到已有內容之後。如果該文件不存在,創建新文件進行寫入。ab以二進制格式打開一個文件用於追加。如果該文件已存在,文件指針將會放在文件的結尾。也就是說,新的內容將會被寫入到已有內容之後。如果該文件不存在,創建新文件進行寫入。a+打開一個文件用於讀寫。如果該文件已存在,文件指針將會放在文件的結尾。文件打開時會是追加模式。如果該文件不存在,創建新文件用於讀寫。ab+以二進制格式打開一個文件用於追加。如果該文件已存在,文件指針將會放在文件的結尾。如果該文件不存在,創建新文件用於讀寫。

2.讀文件

2.1直接打開就讀

with open('filepath','r') as f:
for line in f:
print(line)
print('一行數據')

雖然f是一個文件實例,但可以通過以上方式對每一行進行循環處理了,處理時每一行是一個字符串str,而且這個是速度最快最簡潔的方法。

2.2.read()讀取

fileObject.read([count])
被傳遞的參數是要從已打開文件中讀取的字節計數。該方法從文件的開頭開始讀入,如果沒有傳入count,它會嘗試盡可能多地讀取更多的內容,很可能是直到文件的末尾。

with open('filepath','r') as f:
ff=f.read()

這個函數把文件全部內容一次性讀到一個字符串中。就是一坨的那種,如果把ff用循環讀取的方式輸出,會是一個一個字符,因為ff是字符串,本質上是tuple。

2.3.readlines()讀取

with open('filepath','r') as f:
lines=f.readlines()
for line in lines:
print(line)

2.4.readline()讀取

with open('filepath','r') as f:
line =f.readline()
while line:
print(line)
line=f.readline()

這種方式是一行一行的讀,非常的省內存,當文件巨大的情況下是有好處的。

3.寫文件

write()方法可將任何字符串寫入一個打開的文件。需要重點注意的是,Python字符串可以是二進制數據,而不是僅僅是文字。

fileObject.write(string)

# 打開一個文件
fo = open("foo.txt", "w")
fo.write( "\nVery good site!\n")
# 關閉打開的文件
fo.close()

4.關閉文件

File 對象的 close()方法刷新緩沖區裡任何還沒寫入的信息,並關閉該文件,這之後便不能再進行寫入。

fileObject.close()

# 打開一個文件
fo = open("foo.txt", "w")
print "文件名: ", fo.name
# 關閉打開的文件
fo.close()

5.文件定位

tell()方法告訴你文件內的當前位置, 換句話說,下一次的讀寫會發生在文件開頭這麼多字節之後。
seek(offset [,from])方法改變當前文件的位置。Offset變量表示要移動的字節數。From變量指定開始移動字節的參考位置。
如果from被設為0,這意味著將文件的開頭作為移動字節的參考位置。如果設為1,則使用當前的位置作為參考位置。如果它被設為2,那麼該文件的末尾將作為參考位置。

# 打開一個文件
fo = open("foo.txt", "r+")
str = fo.read(10)
print "讀取的字符串是 : ", str
# 查找當前位置
position = fo.tell()
print "當前文件位置 : ", position
# 把指針再次重新定位到文件開頭
position = fo.seek(0, 0)
str = fo.read(10)
print "重新讀取字符串 : ", str
# 關閉打開的文件
fo.close()

6.作者答疑

如有疑問,敬請留言。


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved