1. 程式人生 > >Python學習_我該怎麼讀取檔案中的資料並操作檔案

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’不會清空檔案