f = open('文件的路徑',mode = '打開文件的模式',encoding = '編碼方式') # 打開 第一個內容是文件的名字(必須是字符串) # mode 第二個內容是咱們對文件的操做方式 # encoding 第三個內容是咱們文件的編碼集 # f 文件句柄全部對文件的操做都是操做文件句柄
mode = 'r'python
# mode = 'r' 只讀 content = f.read() # 讀 一次性所有讀取 content = f.readline() # 讀取一行,可是一行後有\n換行 content = f.readlines() # 讀取多行,存放在列表裏 content = f。read(3) # mode = 'r' read裏的內容就是表示讀取的字符數量 print(content)
mode = 'rb'面試
f = open(r'c:\Users\Super La\Desktop\qwe.txt', mode = 'rb') # r 和 \\ 同樣都是轉義 r'c:\Users\Super La\Desktop\qwe.txt' 'c:\\Users\\Super La\\Desktop\\qwe.txt' # 若是直接拷貝文件路徑的話 將C轉換成c # rb讀取字節 print(f.read()) # 讀取字節 不能指定編碼格式
絕對路徑:從磁盤開始查找的就是絕對路徑編碼
相對路徑:相對與 上文件夾內容詳解來查找的一種路徑9操作系統
文件路徑推薦寫法 用相對路徑code
mode = 'w'ip
f = open('t1.txt', mode = 'w', encoding = 'utf8') f.write('lalalalaalal') f.write('啦啦啦啦啦啦') print(f.write('123456')) # 返回建立字符的數量 # w模式 若是文件不存在就新建一個 # 覆蓋寫,寫以前先把文件清空
mode = 'wb'utf-8
f = open('qq.jpg',mode = 'rb') f = open('qq1.jpg',mode = 'wb') f.write(f.read())
a 模式 追加rem
f = open('t1',mode = 'a', encoding = 'utf8') f.write('lalala') #文件最後添加內容
'w' 只寫 沒有讀的功能 打開word 打不開字符串
r+ 讀 寫it
f = open('t1',mode = 'r+',encoding = 'utf8') # 讀 寫 #print(f.read()) #讀內容 #f.write('啦啦啦') # 寫 讀 錯誤示範 寫的時候會把源文件覆蓋一部分 #f.write('啦啦啦') #print(f.read()) #讀內容
w+ 寫 讀
f = open('t1',mode = 'w+',encoding = 'utf8') f.write('lalala') f.seek(0) # 移動文件光標 print(f.read())
a+ 追加 讀
f = open('t1',mode = 'a+',encoding = 'utf8') f.seek(0) print(f.read()) f.write('哈哈哈')
最經常使用的r+
f = open(r'..\t1',mode = 'r+',encoding = 'utf8') # ..\ 返回上一級 #print(f.read()) # 讀內容 #f.write('今天是個好日子')
總結:
# r 只讀 不能寫 # read() 讀取所有 模式是r的時候 read(3) 讀取3個字符 # 模式是rb的時候 read(3) 讀取3個字節 # read() 讀取一行 # readlines() 存放在一個列表中 # w 只寫 不能讀 覆蓋寫,先清空文件的內容,再寫 # 當文件不存在的時候,建立一個文件 # a 追加 不能讀 # 寫的內容一直在問價的末尾 # r+ # 錯誤示範 先寫在讀 # 正確的是 先讀在寫 # w+ 寫讀 # 寫讀的時候是讀不到內容的,除非移動光標 # a+ 追加寫 讀 # 寫讀的時候是讀不到內容的,除非移動光標 # 最經常使用:r, w, a, r+, a+
f = open('t1',mode = 'r',encoding = 'utf8') #print(f.read()) msg = f.read() print(msg) f.close() # 關閉文件 f = open('t1',mode = 'w',encoding = 'utf8') msg = f.write('啦啦啦') f.flush() # 刷新 print(msg) f.close()
with open('t1', mode = 'r', encoding = 'utf8') as f : #上下文管理 ---面試題 msg = f.read() print(msg) # 不用自動關閉
with open('t1','r',encoding = 'utf8') as f: print(f.read()) print(f.seeek(0)) # 字節 # 雙數字 # (0,0)文件的頭部 # (0,2)文件的尾部 # (0,1)當前位置 # 單數字 seek(0) #字節 print(f.read(1)) # 讀一個字符 print(f.tell()) # 查看光標的位置 數的字節
with open('t1','r',encoding = 'utf8') as f: f.truncate(9) #截取 3個字符 指定字節以後的內容所有刪除
import os os.rename('t2','t3') # 修改文件名
with open('t1','r',encoding = 'utf8') as f , open('t2','a',encoding = 'utf8') as f1: msg = f.read() # 將文件複製一份 msg = msg.replace('好','困') f1.write(msg) import os os.remove('t1') # 刪除源數據 os.rename('t2','t3')
with open('t4',mode = 'r',encoding = 'utf8') as f, open('t6', mode = 'a',encoding = 'utf8') as f2: for i in f: print(i.strip()) f2.write(i) # 文件修改
今日總結:
# open() # 打開 # close 要關閉文件 # 寫模式下須要刷新 flush() # r 只讀 # read(3) 看對文件操做的模式來判斷是字符仍是字節 # mode = 'r' 時候是字符 # mode = 'rb' 時候是字節 # readline() 讀取一行,自帶\n(換行) # readlines() 讀取所有以一行一行的形式存在放列表裏 # a 追加 #文件的末尾寫 # w 覆蓋寫 # 先清空文件,後寫入文件 # rb ,wb ab本身試 # 只要是帶b的模式,注意的是否是不能有encoding # a+ # 追加 + 讀 注意 無論怎麼讀都讀不到內容,除非移動光標 # w+ # 覆蓋寫 + 讀 注意:先寫後讀 先讀後寫 除非移動光標 # r+ # 讀 + 寫 注意: 先讀後寫 # 其餘操做 # seek() 移動光標 # 0,0 開頭 # 0,1 當前 # 0,2 末尾 # 3 若是是文字就移動一位,若是是英文就移動3位 # tell() 查看光標 光標是按照字節數的 # truncate() 截取 內容是字節數 # 文件修改 import os # 導入 os和操做系統相關 # os.rename() # 重命名 第一個參數舊的名字,第二個是新的名字 # os.remove() # 刪除這個文件 字符串 # with open('t1','r',encoding='utf-8')as f,\ # open('t2','w',encoding='utf-8')as f1: # 路徑: # 絕對路勁: 從磁盤根目錄開始查找 # 相對路勁: 相對於某個東西來查找就是相對路徑 # 返回上一級 ..\ # c:\user\... 能夠把單個\寫成雙\\ # 在路徑的前面加一個r # 以上兩種就是轉義