python 文件操做

  什麼是文件?
  
  文件是操做系統提供給應用程序操做硬盤的的一個虛擬單位,用於應用程序將數據永久保存
  
  1.1文件基本操做
  
  打開文件:
  
  f = open(r'文件的路徑',mode='模式',encoding='編碼類型')
  
  f = open(r'a.txt',mode='r',encoding='unf-8')
  
  with open(r'a.txt',mode='r',encoding='unf-8') as f: #with,不須要使用.close()
  
  print('===>')
  
  print(f.read())
  
  讀文件:
  
  data=f.read()   #讀出文件全部的內容
  
  print(data)
  
  關閉文件:
  
  f.close() #回收操做系統的資源
  
  f.write()   #寫
  
  f.read()    #讀
  
  f.flush()   #刷新
  
  f.close()   #關閉文件
  
  默認的打開文件的編碼是:當前操做系統默認的編碼,win:gbk,linux:utf-8
  
  f=open('a.txt',mode='r',encoding='utf-8')
  
  print(f.read())
  
  f.close()
  
  1.2打開模式和文件操做 (t 模式)
  
  文件的打開模式: t:text文本模式,讀寫文件是以字符串爲單位,須要指定字符編碼, t模式的侷限性是隻能讀寫文本文件 b:bytes字節模式,讀寫文件都是以bytes爲單位,不須要指定字符編碼 b模式的好處的是能夠讀寫任意類型的文件
  
  1.21 r 只讀
  
  只能讀取(經常使用),文件不存在時報錯, 文件存在,光標停在文件開頭
  
  f=open('a.txt',mode='r',encoding='utf-8') # mode='rt'
  
  f.write('哈哈啊哈哈啊啊 啊啊123213213123\n') # 拋出異常,不能寫
  
  print(f.readable())                      #true
  
  f = open('a.txt', mode='r', encoding='utf-8')       #打印一行
  
  print(f.readline(),end='')                         #f.readline(5),打印前五個字符,空:默認打印一行
  
  f.close()                                       ##一次讀一行
  
  f = open('a.txt', mode='r', encoding='utf-8')  ##讀出文件全部的行存到列表中
  
  print(f.readlines())                        #['aaaaaaaaaaaaaaa eeeeeeeee\n', 'bbbbbbbbbbbbbb\n']
  
  for line in f.readlines():       #循環文件不要使用該方式,由於在文件過大的狀況下有可能會撐爆內存
  
  print(line,end='')
  
  1.22w 只寫
  
  寫入前清空文件內容(經常使用), 沒有文件則新建, 文件存在,光標停在文件開頭
  
  f=open(r'a1.txt',mode='w',encoding='utf-8') #默認是wt
  
  f.write('第一行\n')
  
  f.write('第二行\n')
  
  f.writelines(['111111\n','222222\n',www.yuntianyul.com'333333\n'])
  
  f.write('aaaaaaaaaaaaaaaaaaaa\nbbbbbbbbbbbbbbb\nccccccccccccccc\n')
  
  f.close()
  
  1.23 a 追加
  
  追加內容到文件末尾(經常使用),沒有文件則新建 ,文件存在,光標停在文件末尾
  
  f = open('a.txt', mode='a', encoding='utf-8')
  
  print(f.writable())     #true
  
  f.readlines()           #報錯
  
  f.write('5555555555555\n')
  
  f.writelines(['111111\n','222222\n','333333\n'])
  
  f.close()
  
  強調: 寫文件換行符用\n 讀文件換行符也是\n
  
  1.3 打開模式和文件操做 (b 模式)
  
  文件的打開模式b模式 強調: 一、與t模式相似不能單獨使用,必須是rb,wb,ab 二、b模式下讀寫都是以bytes單位的 三、b模式下必定不能指定encoding參數
  
  1.31 r 只讀
  
  只能讀取(經常使用),文件不存在時報錯
  
  rb模式
  
  with open('1.jpg',mode='rb') as f:
  
  data=f.read()
  
  print(type(data))
  
  print(data.decode('utf-8'))
  
  with open('db.txt',mode='rb',) as f:
  
  data=f.read()
  
  print(data.decode('utf-8')) #bytes-----unicode
  
  print(type(data))
  
  with open('1.jpg',www.yuntianyuled.cn'rb') as f:
  
  for line in f:
  
  print(line)
  
  1.32 w 只寫
  
  寫入前清空文件內容(經常使用), 沒有文件則新建
  
  wb模式
  
  with open('b.txt',mode='wb') as f:
  
  msg='你好啊,吳三炮'
  
  f.write(msg.encode('gbk'))
  
  with open('b.txt',mode='wb') as f:
  
  msg='你好啊,吳三炮'
  
  f.write(msg.encode(www.cmylept.cn'utf-8'))
  
  1.33 a 追加
  
  追加內容到文件末尾(經常使用),沒有文件則新建
  
  ab模式
  
  with open('b.txt',mode='ab') as f:
  
  f.write('你好'.encode('utf-8'))
  
  1.4 r+ 讀寫 / w+ 寫讀 / a+ 追加讀寫
  
  with open('b.txt',mode='r+t',encoding='utf-8') as f:
  
  print(f.readable(www.cmyLgw.cn ))         #true
  
  print(f.writable())         #true
  
  print(f.readlines())
  
  f.write('\n吳大炮你好\n')
  
  for line in f.readlines():
  
  print(line,end='')
  
  r+b 讀寫二進制 / w+b 寫讀二進制 / a+b 追加讀寫二進制
  
  1.5 文件修改
  
  修改文件方式一: 一、先把文件內容所有讀入內存 二、而後在內存中完成修改 三、再把修改後的結果覆蓋寫入原文件 缺點:會在文件內容過大的狀況下,佔用過多的內存
  
  with open('user.txt',mode='r',encoding='utf-8') as f:
  
  data=f.read()
  
  data=data.replace('吳佩其','吳佩其[老男孩第二帥的人]')
  
  with open('user.txt',mode=www.wanhaoptdL.com'w',encoding='utf-8') as f:
  
  f.write(data)
  
  修改文件方式二:
  
  一、以讀的方式打開原文件,以寫的方式打開新文件 二、讀一行原文內容,寫入新文件, 若是該行內容是須要修改的內容,那麼修改完後再寫入新文件 三、刪掉原文件,將新文件名重命名爲原文件名
  
  import os
  
  with open('user.txt',mode='rt',encoding='utf-8') as read_f,\
  
  open('user.txt.swap',mode='wt',encoding='utf-8') as write_f:
  
  for line in read_f:
  
  if '吳佩其' in line:
  
  line=line.replace('吳佩其','吳佩其[老男漢特別特別的老]')
  
  write_f.write(line)
  
  os.remove('user.txt')
  
  os.rename('user.txt.swap','user.txt')
  
  1.6 光標
  
  with open('user.txt',www.ztyLegw.cn'r+',encoding='utf-8') as f:
  
  f.seek(9)                                  #偏移量的單位是字節
  
  print(f.tell())                            #獲取當前光標位置
  
  print(f.read())
  
  with open('user.txt','r+',encoding='utf-8') as f:
  
  f.seek(9)                                  #偏移量的單位是字節
  
  print(f.tell())
  
  f.write('[老男孩第二帥的人]')linux

相關文章
相關標籤/搜索