【文件的讀模式】python
文件的對象:文件的讀寫經過文件操做對象進行。app
Python2 ----- File函數
Python3 ----- TextIOWrapper指針
文件的打開:對象
內置函數open(file,mode) --- 打開文件,獲取文件操做對象。圖片
必定要有file文件路徑(路徑、文件名、文件格式) 不然報錯。字符串
fo = open(fileDir) ----- 只讀pycharm
路徑的寫法:①絕對路徑 ----- 從根目錄開始的it
②相對路徑 ------ ./當前位置 ../ 上一級class
fileDir = 'C:/test.txt'
fileDir = 'C:\\test.txt'
fileDir = r'C:\test.txt' --- 取消轉義
讀模式:若是該文件不存在會報錯!
fo = open(dileDir, 'r') <==> fo = open(fileDir)
fo.tell() -------------- 從0開始 顯示指針位置
fo.read(2) ------------ 讀2個字符
fo.read() -------------- 讀所有內容
文件中的換行是2個長度 \n 'a\nb' ----- 字符串中是一個
fo.close() --- 關閉文件
移動文件指針位置:seek()
0模式: --- 絕對位置模式 fo.seek(1,0) 從0開始 通常像txt、log r
前提:python3 必定在'rb'模式下 ---- 二進制模式 --- 非文本文件(圖片)
1模式:當前位置開始移動 fo.seek(移動的位數,模式1) ----- 如:fo.seek(-1, 1) rb
移動的位數 正數:向後移 負數:向前移
2模式: ---從尾部位置開始 fo.seek(-1,2) rb
移動的位數 正數:向後移 負數:向前移
代碼例子:
fileDir = 'C:/test.txt'
fo = open(fileDir, 'rb') # 打開文件
print('讀前',fo.tell()) # 顯示指針當前位置
print(fo.read(2)) # 讀2個字符
print('讀後',fo.tell()) # 再次顯示指針當前位置
fo.seek(2,2) # 移動向後移動兩位
print(‘移動後’,fo.tell()) # 再一次顯示指針當前位置
readline: 讀取一行
1 - 該方法返回是print(type(fo.readline())) --- <class 'str'>
2 - 文件指針會作相應的偏移
readlines:讀取全部行
1 - 該方法返回的是print(type(fo.readlines())) --- <class 'list'>
區別:① fo.read() -------- 返回str
② fo.readlines() -------- 返回是list
2 - fo.read().splitlines() --- 返回list 並且去掉換行符
=================================================================================
【文件寫模式】:
寫模式特色:能夠新建文件,若文件不存在則會建立一個新文件;
若是寫模式打開一個文件,全部的內容會被清空。
1 - fo = open(fileDir, 'w')
2 - 若是該路徑下的文件存在 --- 會清空
3 - 若是該路徑下的文件不存在 ---- 會新建
4 - 在pycharm裏面,你執行了fo.write('123') ----- 能夠直接寫進去
5 - fo.write('123') --- 返回值 ---- 寫的字符長度
6 - fo.flush() 強行寫入文件
7 - fo.close() 關閉文件會強行寫入文件
追加模式 a:只是爲了在文件末尾追加內容而打開文件
with open方式:
1 - with open(fileDir) as rFile: ------等價於--------- rF = open(fileDir)
2 - 能夠省略fo.close()
3 - 操做多個文件
seek: 1 - (1,模式) --- 0模式 ---- 絕對位置,從0開始
2 - (1,模式) --- 1模式 ---- 當前位置,開始
3 - (1,模式) --- 2模式 ---- 尾部位置,開始
例子:
fileDir2 = open('C:/text.txt', 'w')
fileDir2.write('123456') # 必定是str
# 若是寫入時,須要換行時,應該怎麼作?
fileDir2.write('01-test'+'\n')
fileDir2.write('02-test')
fileDir2.flush() # 寫入
fileDir2.close() # 關閉 一樣也會保存