python IO操作

來源:互聯網
上載者:User

標籤:列表   方法   get   bye   size   字元   odi   jpg   語句   

python io編程
  • 讀寫檔案是常見的io操作,python內建了讀寫檔案的函數,用法與C是相容的。
  • 讀寫檔案前,我們先必須瞭解一下,在磁碟上讀寫檔案的功能都是由作業系統提供的,現代作業系統不允許普通的程式直接操作磁碟.

    讀檔案
  1. 要以讀檔案模式開啟一個檔案清單,使用open()函數,並傳入檔案名稱和標識符:

     f = open(r‘.1.txt‘,‘r‘)
    • 這是第一個r表示引號裡面的東西不轉義,第二個r 表示讀。
  • 如果檔案成功開啟,我們調用read方法可以一次性讀取全部內容:

      f = open(r‘.1.txt‘,‘r‘)  f.read()  ------------  ‘hello,word!‘
  1. 最後一步調用close()方法關閉檔案。

     f.close()
    由於讀寫檔案時有可能發生錯誤,一旦出錯,後面的f.close()就不會被調用。所有我們使用try.....finally來實現:
     try:     f =open(r‘.1.txt‘,‘r‘)     print(f.read()) finally:     if f:         f.close()
  • 每次這麼寫就太繁瑣了,所以,python引出了with語句來自動調用close()方法:

      with open(r‘.1.txt‘,‘r‘) as f:       print(f.read())
  • 調用read會一次性讀取檔案的全部內容,如果檔案有10G,記憶體就炸了。
    • read(size) 每次讀取size個位元組的內容
    • readline()每次讀取一行內容
    • readlines()一次讀取所有內容並返回list
  • 讀取二進位檔案

      >>> f = open(‘/Users/michael/test.jpg‘, ‘rb‘)  >>> f.read()  b‘\xff\xd8\xff\xe1\x00\x18Exif\x00\x00...‘ # 十六進位表示的位元組
  • 字元編碼

      f =open(‘.1.txt‘,‘r‘,encoding = ‘gbk‘,errors=‘ignore‘)
    • errors 會忽略錯誤編碼字元
  • 寫檔案

      f = open(‘.1.txt‘,‘w‘)  f.write(‘hello,word‘)  f.close()
python io操作標識符
  • ‘r‘ 開放閱讀(預設)
  • ‘w‘開啟寫入,先截斷檔案
  • ‘x‘ 開啟以進行獨佔建立,如果檔案已存在則失敗
  • ‘a‘ 開啟以進行寫入,如果存在則附加到檔案的末尾
  • ‘b‘ 二進位模式
  • ‘t‘ 文字模式(預設)
  • ‘+‘ 開啟磁碟檔案進行更新(讀寫)
StringIO 和ByterIOStringIO
  • 很多時候,資料讀寫不一定是檔案,也可能在記憶體中讀取
  • stringIO顧名思義就是在記憶體中讀取str。

      from io import StringIO  f = StringIO()  f.write(‘hello‘)  f.write( ‘ ‘)  print(f.getvalue())
    • getvalue()方法用於獲得寫入後的str。
  • 要讀取StringIO,可以初始化StringIO,然後,像讀檔案一樣讀取:

      from io import StringIO  f = StringIO(‘Hello\nHi!\nGoodbye‘)  while True:      s = f.readline()      if s == ‘‘:          break      print(s.strip())
    BytesIO
  • BytesIO實現了在記憶體中讀取bytes,我們建立一個BytesIO,然後寫入一些bytes

      from io import BytesIO  f = BytesIO()  f.write(‘中午‘.encode(‘utf-8‘))  print(f.getvalue())
操作檔案和目錄
  • os的準系統

      import os  os.name  ---------  ‘nt‘    
  • 在作業系統中定義的環境變數,全部儲存在os.environ這個變數中,可以直接查看:

      import os  os.environ  # get 擷取單個環境的變數  os.environ.get(‘PATH‘)
    操作檔案和目錄
  • 操作檔案和目錄的函數一部分放在os模組中,一部分放在了os。path

      # 查看目前的目錄的絕對路徑  os.path.abspath(‘.‘)  # 在在某個目錄下建立一個新目錄,首先把新目錄的完整路徑表示出來  a=os.path.join(‘/Users/michael‘,‘testdir‘)  # 刪除一個目錄  os.rmdir("a")  # 建立一個目錄  os.mkdir("a")
  • 把兩個路徑合成一個時,不要直接拼接字元,而要通過os.path.join().這樣可以正確處理兩個作業系統路徑分隔字元不同的情況
  • 同樣,才分路徑的時候用os.path.split()函數

      os.path.split(‘/Users/michael\\testdir.txt‘)  (‘/Users/michael‘, ‘testdir.txt‘)
  • os.path.splitext可以直接獲得檔案的副檔名

      os.path.splitext(‘/Users/michael\\testdir.txt‘)  (‘/Users/michael\\testdir‘, ‘.txt‘)

python IO操作

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.