文件基本处理
1 打開文件,將文件句柄賦值給一個變量
2 拿句柄對文件進行操作
3 關閉文件
將一個文件第一行寫道另外一個文件
f = open("test","r",encoding="utf-8") # open找的是系統(tǒng)的編碼 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 test with open("test","rb") as f :#b的方式不能用encodingdata= f.read()print(data)?
b'\xe5\x8c\x97\xe4\xba\xac182\r\niloveyoubeijing111\r\n' result\r\n代表回車,字母和數(shù)字可以直接顯示,漢字用2進制代替,文件是utf-8格式,所以一個漢字三個字節(jié)
print(data.decode("utf-8"))?
北京182 iloveyoubeijing111 result?
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試一下
我愛北京天安門我愛北京天安門 你好么 我很好 test 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', '我很好'] Result?
with open("test","r",encoding="utf-8") as f:f.readline()print(f.tell()) #光標位置處,即移動的字節(jié)處f.readline()print(f.tell())?
# 3*14+2=44 # 3*3+2+44=55 Result?
f.seek(3) #移動光標到第3個字節(jié)之后,print(f.tell())print(f.readline()) #如果移動的不是3的整數(shù)倍,會報錯,因為utf-8無法解碼?
3 愛北京天安門我愛北京天安門 Result?
print(f.read(4)) #read讀的是字符 f.truncate(5) #截取0-5字節(jié)并保留,所以一定要是w模式 r+.a+,w可以,w+不行 print(f.readlines())?seek(a,0)從頭開始seek,seek(a,1)從當前光標seek,seek(a,2)從后向前seek,2的時候a需要是負數(shù),文件打開模式需要帶b
print last sentence of the file 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 第一行 第二行 第三行 第四行 最后一行 test 這是最后一行: 最后一行 result?
轉載于:https://www.cnblogs.com/telma/p/10510355.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結
- 上一篇: 大三了,计算机专业学生的困惑。 [转]
- 下一篇: IDEA:No SLF4J provid