1、 讀取文件,文件中沒有中文
備注 :
文件名 : EnglishFile.txt
文件位置 : 保存在所寫的.py文件的同級目錄,附上截圖,便於參考
備注 : 文件位置可以改變,只需要把文件路徑傳對即可,這里給了截圖是怕有的小伙伴不知道文件該放在哪里,導致運行本程序出錯
文件內容 :
第一種讀取方式 : read()
功能 : 讀取文件全部內容
參數 : /
返回類型 : 字符串
備注 : /
# -*- coding: UTF-8 -*- filePath = 'englishFile.txt' fileoperation = open(filePath, 'r') print fileoperation.read() fileoperation.close()
運行結果
This is what's in testFile: first line, this is what's in testFile: second line this is what's in testFile: third line
第二種讀取方式 : readlines()
功能 : 逐行讀取,但是也讀取完文件
參數 : /
返回類型 : list列表
備注 : /
# -*- coding: UTF-8 -*- filePath = 'englishFile.txt' fileoperation = open(filePath, 'r') fileMessages = fileoperation.readlines() for fileMessage in fileMessages: print fileMessage, fileoperation.close()
運行結果
This is what's in testFile: first line, this is what's in testFile: second line this is what's in testFile: third line
第三種讀取方式 : readline()
功能 : 逐行讀取文件, 每次讀取一行
參數 : /
返回類型 : 字符串
備注 : /
# -*- coding: UTF-8 -*- filePath = 'englishFile.txt' fileoperation = open(filePath, 'r') print fileoperation.readline(), print fileoperation.readline(), print fileoperation.readline() fileoperation.close()
運行結果
This is what's in testFile: first line, this is what's in testFile: second line this is what's in testFile: third line
2、 讀取文件,文件中存在中文(其實讀取方式相同,只是讀出來為亂碼,我們通過 decode('gb2312') 進行轉碼即可)
備注 :
文件名 : ChineseFile.txt
文件位置 : 保存在所寫的.py文件的同級目錄,附上截圖,便於參考
備注 : 文件位置可以改變,只需要把文件路徑傳對即可,這里給了截圖是怕有的小伙伴不知道文件該放在哪里,導致運行本程序出錯
文件內容 :
第一種讀取方式 : read()
功能 : 讀取文件全部內容
參數 : /
返回類型 : 字符串
備注 :讀取之后為亂碼,但是我們只要通過 .decode('gb2312') 編碼即可
# -*- coding: UTF-8 -*- filePath = 'ChineseFile.txt' fileoperation = open(filePath, 'r') print fileoperation.read().decode('gb2312') fileoperation.close()
運行結果
這是testFile文件中的內容 : 第一行
這是testFile文件中的內容 : 第二行
這是testFile文件中的內容 : 第三行
PS : 也就是把讀取的內容用.decode('gb2312')編碼輸出而已!!!
第二種以及第三種讀取方式同上,這里就不再寫了。
3、 寫入文件
備注 :
文件名 : writeFile.txt
文件位置 : 保存在所寫的.py文件的同級目錄,附上截圖,便於參考
備注 : 文件位置可以改變,只需要把文件路徑傳對就行了,這里給了截圖是怕有的小伙伴不知道文件該放在哪里,導致運行本程序出錯
第一種方式寫入文件 write(str)
功能 : 直接把參數str寫入文件
參數 : 需要寫入文件的字符串
返回類型 : None
PS : 寫入回車用 \n (也就是換行), 寫入中文直接傳遞中文字符串即可
# -*- coding: UTF-8 -*- filePath = 'writeFile.txt' writeFileOperation = open(filePath, 'w') writeString = 'aaa \nbbb' writeFileOperation.write(writeString) print '寫入文件成功' writeFileOperation.close()
運行結果
寫入文件成功
PS : 此時,您可以看到 writeFile.txt 文件中已經寫入內容了
第二種方式寫入文件 writelines(sequence_of_strings)
功能 : 把 sequence_of_strings 寫入文件
參數 : 字符串或者任何產生字符串的可迭代對象
返回類型 : None
備注 : 我們很容易理解為寫入一行就直接寫入一個回車,其實並沒有,這個函數沒有自動加入回車,因此還得自己加 \n 否則不換行, 寫入中文直接傳遞中文字符串即可
# -*- coding: UTF-8 -*- filePath = 'writeFile.txt' writeFileOperation = open(filePath, 'w') writeFileOperation.writelines('aaa') writeFileOperation.writelines('bbb') print '寫入文件成功' writeFileOperation.close()
運行結果
寫入文件成功
PS : 此時我們能看到文件中的內容為aaabbb,沒有換行,這也說明了 writelines() 函數不自動換行
4、 打開文件 open()
功能 : 打開文件,獲取一個操作對象,用於讀寫文件
參數 : 需要打開的文件以及打開方式
返回類型 : file
備注 : 該函數本應該寫在筆記的最前面,但是寫在了最后面。個人原因 : 因為我覺得讀者來看讀寫文件操作,上來就看到一個不是讀取文件的例子,就直接往下划走了,我當時學習時也是這樣, 所以才把這個打開文件放在了最后面。我們都能看出每次操作文件都有 open() , 也就是打開文件,獲取一個文件對象,接下來才可以讀寫文件,比如吃飯前我們得先燒飯,吃完飯得洗碗,所以每次 open() 后我們應該 close() ,例子就不寫了,上面已經用到了,我把打開文件的方式整理一下。
方式 | 描述 |
w | 打開文件用於寫入內容。如果文件存在,直接打開,寫入內容會覆蓋原文件內容,如果文件不存在,自動新建文件(只讀) |
r | 打開文件用於讀取內容。(只讀) |
a | 打開文件用於添加內容,寫入內容在原文件內容之后,不覆蓋原文件內容, 如果文件不存在,自動新建文件 |
wb | 功能同上,只是以二進制格式打開,常用於非文本文檔,如圖片,.mp3 文件等 |
rb | |
ab |