1. 程式人生 > >python學習(十一) 文件和流

python學習(十一) 文件和流

內存 無緩沖 abcd 連接 sss 文件操作 打開文件 while 3.5

11.1 打開文件


  >>> f = open(r‘c:\text\somefile.txt‘), 第一個參數是文件名,必須有;第二個是模式;第三個參數是緩沖。

  11.1.1 文件模式

  如果open函數只帶一個文件名參數,那麽我們可以獲得能讀取文件內容的文件對象。如果要向文件內寫入內容,則必須提供一個模式參數

  ‘r‘ -----讀模式(制定讀模式與不制定的效果是一樣的)

  ‘w‘-----寫模式

  ‘a‘-----追加模式

  ‘b‘-----二進制模式(python假定處理的都是文本文件(包含字符),但是如果是其他類型的文件(二進制),比如聲音或者圖像,那麽要指定 b模式)

    (為什麽使用二進制模式: \n 和 \r\n的轉換,但是如果是二進制文件就不會轉。

  ‘+‘-----讀寫模式

  11.1.2 緩沖

  如果是0(False),I/O就是無緩沖的,所有的讀寫操作都是直接針對硬盤;

  如果是1(True),就是有緩沖的,使用內存代替硬盤,速度快,只有在flush或close的時候才會更新硬盤上的數據。

  大於1,代表緩沖區大小(單位是字節),-1代表使用默認緩沖區大小。

11.2 基本的文件方法

  11.2.1 讀和寫

>>> f = open(rc:\text\somefile.txt,w)      // 寫
>>> f.write(
abcd \n ef \r\n gh) 15 >>> f.flush() // 調用close()或flush()才能真正寫進去

>>> f=open(r‘c:\text\somefile.txt‘, ‘r‘) // 讀
>>> f.read(4)      // 只讀4個
‘abcd‘

>>> f.read() // 讀所有的
‘ \n ef \n\n gh‘

  11.2.2 管式輸出

  前一個命令的輸出是下一個命令的輸入,用符號“|”連接

  11.2.3 讀寫行

  >>> f.readline()
  ‘‘
  >>> f.seek(0)       //  定位到文本開始
  0
  >>> f.readline()      // 讀取一個行
  abcd \n

  >>> f.readlines()     // 讀取所有的行,返回列表
  [ ef \n, \n,  gh]

  f.writelines([‘afa‘,‘gdf‘,‘gfdg‘]) // 按行的方式寫入列表

  11.2.4 關閉文件

  對文件操作應該,在finally中調用 f.close(), 這樣保證出異常了也可以正確關閉文件。

  11.2.5 使用基本文件方法

11.3 對文件內容進行叠代

  11.3.1 按字節處理 

f = open(filename)
char = f.read(1)
while char:
    process(char)
    char = f.read(1)
f.close()

  11.3.2 按行操作

   readline()

  11.3.3 讀取所有內容

  read() : 不帶參數的read方法可以讀取所有行。

  readlines(): 讀取所有行。

  11.3.4 使用fileinput實現懶惰行叠代

  readline() 每次只讀一行。

import fileimput
for line in fileinput.input(filename):
    process(line)

  11.3.5 文件叠代器

f = open(filename)
for line in f:
    processs(line)
f.close()

python學習(十一) 文件和流