01.打開檔案的三個步驟
打開 --> 操作 --> 關閉
打開檔案
f = open('/tmp/passwd')
讀操作
content = f.read() ##定義content為所讀的東西
print(content) ##将讀到的東西列印出來
print(f.writable()) ##列印檔案的可寫性
print(f.readable()) ##列印檔案的可讀性
寫操作
f.write('hello')
關閉
f.close()
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHLzUkaNhXRU5keRpHW4Z0MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL0EDO3MjM1IjMyEDNwkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
預設是不可寫的,隻是可讀
02.檔案的讀寫各種方法
r:(預設)
-隻能讀,不能寫
-讀取的檔案不存在,會報錯
r+:
-可以執行讀寫操作
-檔案不存在,報錯
-預設情況下,從檔案指針所在位置開始寫入
w:
-write only
-會清空檔案之前的内容
-檔案不存在,不會報錯,會建立新的檔案并寫入
w+:
-rw
-會清空檔案内容
-檔案不存在,不報錯,會建立新的檔案
a:
-write only
-不會清空檔案内容
-檔案不存在,會報錯
a+:
-rw
-不清空檔案内容,在末尾追加
-檔案不存在,不報錯
03.檔案打開後的指針
f = open('/tmp/passwd','r+')
print(f.tell()) #檢視目前指針所在的位置
f.write('python')
print(f.tell())
content = f.read()
print(content)
f.close()
檔案的讀取是從指針開始的,當檔案内寫入東西後,預設從指針初始位置開始寫,寫完後指針來到寫入的東西之後,這時候直接讀是讀不到的。
04.檔案的讀取操作
f = open('/tmp/passwd','rb+')
print(f.read())
print(f.readline())
print(f.readlines())
-
readlines():讀取檔案内容,傳回一個清單,清單的元素分别為檔案
行内容
f = open('/tmp/passwd','rb+')
print(f.read(4))
print(f.readline(),end='')
print(f.readlines(),end='')
f.close()
-
預設情況下讀取檔案的所有内容,小檔案可以直接用read讀取,如果
是大檔案(檔案大小>記憶體大小),不能通過read一次性讀取所有内容
檔案的寫入操作
f.write('hello')
f.writelines(['a','b']) #将清單裡的每個元素寫入檔案
移動檔案指針
f.seek(-1,2)
print(f.read())
print(f.tell())
f.close()
seek方法,移動指針
seek的第一個參數是偏移量:>0,表示向右移動,<0表示向左移動
seek的第二個參數是:
0:移動指針到檔案開頭
1:不移動指針
2:移動指針到末尾
讀取文本檔案:
r r+ w w+ a a+
讀取二進制檔案:
rb rb+ wb wb+ ab ab+
f = open('QR.png',mode='rb')
content = f.read()
f.close()
05.上下文管理器
#同時打開兩個檔案
with open('/tmp/passwd') as f1,\
open('/tmp/passwd1','w+') as f2:
#将第一個檔案的内容寫入第二個檔案中
f2.write(f1.read())
#移動指針到檔案最開始
f2.seek(0)
#讀取檔案内容
print(f2.read())