【Python】文件


01.文件的基本操作

1.1 操作文件

在計算機中操作文件的套路是分為三個步驟:
1)打開文件
2)讀/寫文件
3)關閉文件

1.2 操作文件的函數/方法

序號 函數/方法 說明
1 open 打開文件,並且返回文件操作對象
2 read 將文件讀取到內存
3 write 將指定內容寫入文件
4 close 關閉文件

open只負責打開文件,並且返回文件對象
read/write/close三個方法都需要通過文件對象來調用

1.3 讀取文件

1.3.1 read方法(一次性讀取)

read方法讀取文件需要注意一下幾點:
1)open函數的第一個參數是要打開的文件名(文件名區分大小寫)
2)read方法一次性讀取文件所有內容並返回
3)close只負責關閉文件,如果忘記關閉文件,則會造成資源浪費或者影響后續對文件的訪問

# 打開文件,指定編碼格式,避免無法讀取中文
f = open("a.txt",encoding="utf-8")

# 讀取文件
content = f.read()
print(content)

# 關閉文件
f.close()

小提示:
開發過程中,通常會先編寫 打開關閉 的代碼,再編寫中間針對文件的 讀/寫 操作!
第一次打開文件的時候,文件指針指向文件的開始位置,當執行了read方法后,指針會移動到文件末尾。

1.3.2 readline方法(按行讀取)

read方法是一次性將文件讀取到內存,然后返回一個文件對象,如果文件特別大的話,那么對內存的占用會非常嚴重,所以有了readline方法

  • readline方法一次性讀取一行內容
  • 方法執行后,會把文件指針移動到下一行,准備再次讀取
    大文件的正確讀取方式:
# 打開文件
f = open("a.txt",encoding="utf-8")

# 讀取大文件
while True:
    line  = f.readline()
    if not line:
        break
    # 每讀取一行的末尾已經有了一個 \n
    print(line,end="")
    
# 關閉文件
f.close()

2.4 打開文件的方式

默認情況下:open函數是以只讀方式打開文件。
語法格式:

f = open("文件名","訪問方式",encoding="編碼格式")
訪問方式 說明
r 只讀方式打開文件。文件的指針將會放在文件的開頭,這是默認模式。如果文件不存在,拋出異常
w 只寫方式打開文件。如果文件存在會被覆蓋。如果文件不存在,創建新文件
a 追加方式打開文件。如果該文件已存在,文件指針將會放在文件的結尾。如果文件不存在,創建新文件進行寫入
r+ 讀寫方式打開文件。文件的指針將會放在文件的開頭。如果文件不存在,拋出異常
w+ 讀寫方式打開文件。如果文件存在會被覆蓋。如果文件不存在,創建新文件
a+ 讀寫方式打開文件。如果該文件已存在,文件指針將會放在文件的結尾。如果文件不存在,創建新文件進行寫入

小提示
頻繁的移動文件指針,會影響文件的讀寫效率,開發中更多的時候會以 只讀只寫 的方式來操作文件
實戰演練--寫入文件實例

# 寫模式,打開文件
f = open("b.txt","w",encoding="utf-8")

# 寫入內容
f.write("今天天氣真好!\n")
f.write("我們出去釣魚吧!")


# 關閉文件
f.close()

02.文件的復制

2.1 小文件的復制

小文件的復制思路是:打開一個文件,全部讀取后寫入到另外一個文件

# 打開讀與寫的文件
file_read = open("b.txt",encoding="utf-8")
file_write = open("c.txt","w",encoding="utf-8")

# 讀取文件
text = file_read.read()
file_write.write(text)

# 關閉文件
file_read.close()
file_write.close()

2.2 大文件的復制

大文件的復制思路是:打開一個文件,逐行邊讀邊寫。

# 打開讀與寫的文件
file_read = open("b.txt",encoding="utf-8")
file_write = open("c.txt","w",encoding="utf-8")

# 讀取文件
while True:
    line = file_read.readline()
    if not line:
        break
    file_write.write(line)

# 關閉文件
file_read.close()
file_write.close()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM