Python學習Day8—文件基本操作
阿新 • • 發佈:2017-12-26
Coding 文件句柄 world lena txt 其他 ont mce -s
打開文件
#’filename.txt‘處指定文件路徑,可以使用絕對路徑和相對路徑 #mode=‘w‘指定文件的打開方式 #encoding=‘utf-8‘指定文件編碼 f = open(‘filename.txt‘,mode=‘w‘,encoding=‘utf-8‘) f.close() #關閉文件,使用上面句柄打開文件後,文件會一直在內存中運行,在對文件進行操作後,應記得關閉文件 --------------------------------------------------------------------------- #使用with關鍵字+open打開文件後,不用再使用close對文件進行關閉,並且可以同時打開多個文件,打開多個文件需要用逗號隔開,最後的句柄名稱後需要加冒號with open(‘filename.txt‘,mode=‘w‘,encoding=‘utf-8‘) as f:#打開一個文件 with open(‘filename.txt‘,mode=‘w‘,encoding=‘utf-8‘) as f,with open(‘filename.txt‘,mode=‘w‘,encoding=‘utf-8‘) as f1:#打開多個文件
操作文件
1.讀
# 此處filename.txt文件中原始內容為:人生苦短,我用python # ①r——只讀,不存在報錯 with open(‘filename.txt‘, mode=‘r‘, encoding=‘utf-8‘) as f: content = f.read() print(content) >>> 人生苦短,我用python # ②rb——以bytes類型讀 with open(‘filename.txt‘, mode=‘rb‘) as f: content = f.read() print(content) >>> b‘\xe4\xba\xba\xe7\x94\x9f\xe8\x8b\xa6\xe7\x9f\xad\xef\xbc\x8c\xe6\x88\x91\xe7\x94\xa8python‘ # ③r+——讀寫,不存在不會創建,寫會覆蓋之前內容with open(‘filename.txt‘, mode=‘r+‘,encoding=‘utf-8‘) as f: content = f.read() f.write(‘\n新添加:Life is short , I use python‘) print(content) >>> 人生苦短,我用python # ④target_file.txt中的內容為: >>> 人生苦短,我用python >>> 新添加:Life is short , I use python # ⑤r+b——以bytes類型讀寫 with open(‘filename.txt‘, mode=‘r+b‘) as f: content = f.read() f.write(‘\n新添加:Life is short , I use python‘.encode(‘utf-8‘)) print(content) >>> b‘\xe4\xba\xba\xe7\x94\x9f\xe8\x8b\xa6\xe7\x9f\xad\xef\xbc\x8c\xe6\x88\x91\xe7\x94\xa8python‘ # target_file.txt中的內容為: >>> 人生苦短,我用python >>> 新添加:Life is short , I use python
2.寫
# 此處filename.txt文件中原始內容為空,需要向其中寫入:人生苦短,我用python # ①w——只寫,不存在則創建,存在則清空再寫 with open(‘filename.txt‘, mode=‘w‘, encoding=‘utf-8‘) as f: content = f.write(‘人生苦短,我用python‘) # target_file.txt中的內容為: >>> 人生苦短,我用python # ②x——只寫,不存在則創建,存在則報錯 with open(‘filename.txt‘, mode=‘x‘, encoding=‘utf-8‘) as f: content = f.write(‘人生苦短,我用python‘) # target_file.txt存在: >>> Traceback (most recent call last): >>> File "D:/python_fullstack_s9/day8/practice.py", line 94, in <module> >>> with open(‘target_file.txt‘, mode=‘x‘, encoding=‘utf-8‘) as f: >>> FileExistsError: [Errno 17] File exists: ‘target_file.txt‘ # filename.txt不存在: >>> 人生苦短,我用python # # ③wb——以bytes類型寫 with open(‘filename.txt‘, mode=‘wb‘) as f: content = f.write(‘人生苦短,我用python‘.encode(‘utf-8‘)) >>> 人生苦短,我用python # # ④w+——寫讀,不存在則創建,寫會覆蓋之前的內容 with open(‘filename.txt‘, mode=‘w+‘) as f: content = f.write(‘hello,world‘) date = f.read() print(date) >>> # filename.txt中的內容為: >>> hello,world # # ⑤w+b——以bytes類型寫讀 with open(‘filename.txt‘, mode=‘w+b‘) as f: content = f.write(‘hello,world‘.encode(‘utf-8‘)) date = f.read() print(date) >>> b‘‘ # filename.txt中的內容為: >>> hello,world
3.追加
# 此處filename.txt文件中原始內容為:人生苦短,我用python,需要在後面添加‘誰用誰知道‘內容 # ①a——追加,不存在則創建,存在則追加 with open(‘filename.txt‘, mode=‘a‘, encoding=‘utf-8‘) as f: content = f.write(‘誰用誰知道‘) filename.txt中的內容為: >>> 人生苦短,我用python誰用誰知道 # ②ab——以bytes類型追加 with open(‘filename.txt‘, mode=‘ab‘) as f: content = f.write(‘誰用誰知道‘.encode(‘utf-8‘)) >>> 人生苦短,我用python誰用誰知道 # ③a+——可讀可寫,不存在則創建,寫則追加 with open(‘filename.txt‘, mode=‘a+‘,encoding=‘utf-8‘) as f: content = f.write(‘誰用誰知道‘) f.seek(0) date = f.read() print(date) >>> 人生苦短,我用python誰用誰知道 # ④a+b——以bytes類型可讀可寫 with open(‘filename.txt‘, mode=‘a+b‘) as f: content = f.write(‘誰用誰知道‘.encode(‘utf-8‘)) f.seek(0) date = f.read() print(date) >>> b‘\xe4\xba\xba\xe7\x94\x9f\xe8\x8b\xa6\xe7\x9f\xad\xef\xbc\x8c\xe6\x88\x91\xe7\x94\xa8python\xe8\xb0\x81\xe7\x94\xa8\xe8\xb0\x81\xe7\x9f\xa5\xe9\x81\x93‘ # filename.txt中的內容為: >>> 人生苦短,我用python誰用誰知道
4.其他操作
① seek() 移動光標指針位置
seek有三種移動方式0,1,2,其中1和2必須在b模式下進行,但無論哪種模式,都是以bytes為單位移動的
② tell() 返回當前指針所在的位置
tell對於英文字符就是占一個,中文字符占三個,參數表示的是字節數區分與read()的不同.
③ truncate() 截斷文件
truncate是截斷文件,所以文件的打開方式必須可寫,但是不能用w或w+等方式打開,因為那樣直接清空文件了,所以truncate要在r+或a或a+等模式下測試效果
④ readline() 讀取一行
⑤ readlines() 讀取多行,返回為列表
⑥ readable() 文件是否可讀
⑦ writeline() 寫入一行
⑧ writelines() 寫入多行
⑨ writable() 文件是否可讀
⑩ closed() 文件是否關閉
? encoding=’utf-8’ 如果文件打開模式為b,則沒有該屬性
? flush() 立刻將文件內容從內存刷到硬盤
? for循環文件句柄
with open(‘filename.txt‘, mode=‘r‘,encoding=‘utf-8‘) as f: for i in f: print(i) >>> 人生苦短,我用python >>> 誰用誰知道
Python學習Day8—文件基本操作