《笨辦法學 python3》系列練習計劃——16.讀寫文件

題目

上一題的加分練習中有讓我們查看 file 的幫助文檔,雖然 python3 中已經沒有 file 這個東西了,不過我們通過 help() 知道了被 open 打開後的這個東西是什麼以及它的幫助文檔,如果大家有大概看過應該有見過下面的幾個方法(函數),請記住它們:

  • close —— 關閉文件。如同編輯器中 文件 -> 保存 的作用。
  • read —— 讀取文件內容。可以把結果賦值給一個變量。
  • readline —— 讀取文本文件中的一行內容。
  • truncate(size) —— 將文件截斷指定 size 字節,size 後的內容將刪除請小心使用。
  • writer(something) —— 把 something 寫入文件。

本題將練習寫入文件 writer 的使用。

加分練習

  1. 如果覺的自己沒弄懂的話,就用老辦法,個每一行加註釋。至少能知道哪一行沒懂。
  2. 寫一個和 15 題類似的腳本,使用 readargv 讀取由 基礎練習 所創建的那個文本文件。
  3. 文件中重複的地方太多了,試着用一個 target.write()line1, line2, line3 打印出來,可以使用字符串、格式化字符、轉義字符。
  4. 找出爲什麼我們需要給 open 多賦予一個 w 參數。




我的答案

16.0 基礎練習 + 16.1註釋

from sys import argv

# 通過解包 argv 獲取 腳本名 和將要保存的 文件名
script, filename = argv

# 詢問是否繼續編輯文件 filename
print("We're going to erase %r" % filename)
print("If you don't want that, hit CTRL-C (^C).")
print("If you do want that, hit RETURN.")
# 等待用戶輸入是否繼續編輯
input("?")

# 如果用戶未輸入 ctrl-c 則會繼續執行
print("Opening the file...")
# 打開文件對象
target = open(filename, 'w')

# 沒有指定 truncate() 的大小,所有實際上刪除了文件的內容
print("Truncating the file. Goodbye!")
target.truncate()

# 獲取三個 input 變量的內容
print("Now I'm going to ask you for three lines.")

line1 = input("line 1: ")
line2 = input("line 2: ")
line3 = input("line 3: ")

# 將內容寫入文件(只在內存中,並未寫入硬盤)
print("I'm going to write there to the file.")
target.write(line1)
target.write("\n")
target.write(line2)
target.write("\n")
target.write(line3)
target.write("\n")

# 關閉文件,將文件寫入硬盤
print("And finally, we close it.")
target.close()

運行以一下腳本
這裏寫圖片描述

可以在腳本所在文件價內發現新建的文檔 test.txt 打開後其內容正如我們輸入的三行內容。
這裏寫圖片描述

16.2 寫一個讀取腳本

# 要求用 argv 方式,所有相見載入
from sys import argv

# 解包
script, filename = argv

print("腳本 %r 正在讀取文件: %r ..." % (script, filename))

# 打開文件
file_open = open(filename)
# 用 print 打印出讀取到的內容
print(file_open.read())

運行一下
這裏寫圖片描述

16.3 優化腳本

# 太羅嗦了 16.3 題優化掉
# target.write(line1)
# target.write("\n")
# target.write(line2)
# target.write("\n")
# target.write(line3)
# target.write("\n")
nl = '\n'
target.write(line1 + nl + line2 + nl + line3 + nl )

16.4 open 爲什麼多了一個 w 參數

open() 的默認參數是 open(file, 'rt') 也就是讀取文本的模式,默認參數可以不用填寫。而本題練習是寫入文件,因此不適應使用 r 參數,需要指定寫入模式,因此需要增加 w 參數。




返回目錄

《笨辦法學 python3》系列練習計劃——目錄

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章