Python學習_我該怎麼讀取檔案中的資料並操作檔案
資料儲存在檔案中使用很方便,可我該怎麼讀取檔案呢?
jiangxue.txt檔案中儲存以下內容:
“
千山鳥飛絕,萬徑人蹤滅。
孤舟蓑笠翁,獨釣寒江雪。
”
1、讀取檔案
假設我在檔案中儲存一首‘江雪’的唐詩
#假設我將‘江雪’這首詩儲存在'jiangxue'程式同文件夾下的txt文件中
with open('jiangxue.txt') as file_jx:
jiangxue=file_jx.read()
print(jiangxue)
輸出:
千山鳥飛絕,萬徑人蹤滅。
孤舟蓑笠翁,獨釣寒江雪。
備註:
首先使用open()開啟檔案並存儲在一個變數中,然後使用read()讀取檔案中的內容並作為字串進行儲存
使用with關閉文件,在文件使用完後會自動關閉文件
列印時有時會在最後一行會出現空行,可以使用rstrip()刪除末尾的行去除空行
open()的引數可以是一個路徑
2、逐行讀取檔案中的內容
#假設我將‘江雪’這首詩儲存在'jiangxue'程式同文件夾下的txt文件中
file_path='jiangxue.txt'
with open(file_path) as file_jx:
for line in file_jx:
print(line.rstrip())
輸出:
千山鳥飛絕,萬徑人蹤滅。
孤舟蓑笠翁,獨釣寒江雪。
備註:使用for迴圈逐行讀取檔案中的內容,你也可以使用readlines()讀取每一行,你把rstrip()去掉測試發現第一行和第二行中間出現了一個空行
#假設我將‘江雪’這首詩儲存在'jiangxue'程式同文件夾下的txt文件中
file_path='jiangxue.txt'
with open(file_path) as file_jx:
lines=file_jx.readlines()
for line in lines:
print(line)
輸出:
千山鳥飛絕,萬徑人蹤滅。
孤舟蓑笠翁,獨釣寒江雪。
備註:with 會關閉開啟的文件,當你想在with程式碼塊外部使用讀取的內容時,你可以將讀取的內容儲存在列表中
3、使用讀取的內容
- 加入我現在想把讀取的內容在一行顯示
file_path='jiangxue.txt'
with open(file_path) as file_jx:
lines =file_jx.readlines()
jiangxue=''
for line in lines:
jiangxue +=line.strip()
print(jiangxue)
輸出:
千山鳥飛絕,萬徑人蹤滅。孤舟蓑笠翁,獨釣寒江雪。
- 假如,我現在只想列印這首詩的第一句“千山鳥飛絕”,可以使用切片操作
file_path='jiangxue.txt'
with open(file_path) as file_jx:
lines=file_jx.readlines()
jiangxue=''
for line in lines:
jiangxue +=line.strip()
print(jiangxue[0:5])
輸出:千山鳥飛絕
假如現在猜詩詞,看你猜的句子是否正確,加入給你詩詞的第一、二、四句讓你猜第三句,並判斷是否正確
file_path='jiangxue.txt'
with open(file_path) as file_jx:
lines=file_jx.readlines()
jiangxue=''
for line in lines:
jiangxue +=line
cai_jx='孤舟蓑笠翁'
if cai_jx in jiangxue:
print('恭喜你答對了!')
else:
print('很遺憾,答錯了!')
輸出:恭喜你答對了!
練習
將上邊的詩詞做成一個填空題:
file_path='jiangxue.txt'
with open(file_path) as file_jx:
lines=file_jx.readlines()
jiangxue=''
for line in lines:
jiangxue +=line
print(jiangxue.replace('孤舟','____'))
輸出:
千山鳥飛絕,萬徑人蹤滅。
____蓑笠翁,獨釣寒江雪。
4、將內容寫入檔案
我們將“千山鳥飛絕”寫入一個檔案qian.txt
#首先將檔案寫入qian.txt
file_path='qian.txt'
with open(file_path,'w') as file_q:
file_q.write('千山鳥飛絕')
#驗證是否已寫入檔案
with open(file_path) as file_w:
qian=file_w.read()
print(qian)
輸出:千山鳥飛絕
備註:為什麼沒有在第一個with 程式碼塊中讀取檔案呢,是因為第一個open有一個‘w’引數,代表只能寫,不能讀,如果想直接讀就把’w’換成‘r+’,‘r’代表只讀,預設是不寫此引數
你也可以檢視一下相同的資料夾下是不是自動生成了一個qian.txt檔案
寫入檔案時也可以將’w’換成‘a’,‘w’會將檔案先清空再寫入,而‘a’不會清空檔案