1 打開文件,將文件句柄賦值給一個變量
2 拿句柄對文件進行操作
3 關閉文件
將一個文件第一行寫道另外一個文件
f = open("test","r",encoding="utf-8") # open找的是系統的編碼
x = f.readlines()
f.close()
f1 = open("test1","w",encoding="utf-8")
f1.write(x[0])
f1.close()
?
with open("test","r",encoding="utf-8") as f,\open("test1","w",encoding="utf-8") as f1: #with open不用close()x = f.read()f1.write(x)
?


北京182 iloveyoubeijing111
with open("test","rb") as f :#b的方式不能用encodingdata= f.read()print(data)
?


b'\xe5\x8c\x97\xe4\xba\xac182\r\niloveyoubeijing111\r\n'
\r\n代表回車,字母和數字可以直接顯示,漢字用2進制代替,文件是utf-8格式,所以一個漢字三個字節
print(data.decode("utf-8"))
?


北京182 iloveyoubeijing111
?
with open("test","wb") as f:x = "我愛北京天安門"f.write(bytes(x,encoding="utf-8"))#f.write(bytes(x.encode("utf-8")))#效果一樣
?f.encoding表示的是文件打開的編碼,如果不知道文件編碼是什么,不知道怎么打開,可以用latin-1試一下


我愛北京天安門我愛北京天安門 你好么 我很好
with open("test","r",encoding="utf-8") as f:print(f.readlines()) #windows上回車\r\n占2個字符。python默認處理顯示成\nwith open("test","r",encoding="utf-8",newline="") as f:print(f.readlines()) #windows上回車\r\n占2個字符。python默認處理顯示成\n
?


['我愛北京天安門我愛北京天安門\n', '你好么\n', '我很好'] ['我愛北京天安門我愛北京天安門\r\n', '你好么\r\n', '我很好']
?
with open("test","r",encoding="utf-8") as f:f.readline()print(f.tell()) #光標位置處,即移動的字節處f.readline()print(f.tell())
?


# 3*14+2=44 # 3*3+2+44=55
?
f.seek(3) #移動光標到第3個字節之后,print(f.tell())print(f.readline()) #如果移動的不是3的整數倍,會報錯,因為utf-8無法解碼
?


3 愛北京天安門我愛北京天安門
?
print(f.read(4)) #read讀的是字符
f.truncate(5) #截取0-5字節并保留,所以一定要是w模式 r+.a+,w可以,w+不行
print(f.readlines())
?seek(a,0)從頭開始seek,seek(a,1)從當前光標seek,seek(a,2)從后向前seek,2的時候a需要是負數,文件打開模式需要帶b


with open("test","rb") as f:offsets = -3n = 0while True:f.seek(offsets,2)data = f.readlines()if len(data)>1: #如果取到2行以上print("這是最后一行:" ,data[-1].decode("utf-8")) #data列表里是二進制,需要解碼breakoffsets*=2


第一行 第二行 第三行 第四行 最后一行


這是最后一行: 最后一行
?