open()函數文件操作


  open函數,該函數用於文件處理

  操作文件時,一般需要經歷如下步驟:

    (1)打開文件

  (2)操作文件

  一、打開文件

    文件句柄 = open("文件路徑","模式")

    打開文件是,需要指定文件路徑和以何等方式打開文件,打開后,即可獲取該文件句柄,日后通過此文件句柄對該文件操作。

    打開文件的模式有:

    (1)r,只讀模式【默認】

    (2)w,只寫模式不可讀;不存在則創建;存在則清空內容】

  (3)x,只寫模式不可讀;不存在則創建;存在則報錯】

  (4)a,追加模式【可讀;不存在則創建;存在則只追加內容

  下面是一個簡單的例子,判斷"w"模式下的文件是否可讀,因為以前一致沒有注意,不知道"w"模式下文件不可讀。實例如下:

    with open("test.log","w") as f:
    f.write("123\n")
    f.write("I love python\n")
    f.write("I must to work hard\n")
    f.write("I must to write string in the file\n")
    #判斷文件是否可讀readable()
    ret = f.readable()
  
  print(ret)

  運行如下:

  False

    首先,我們用"w"只寫模式打開文件,並向文件中添加內容,然后使用readable()判斷文件是否可讀,結果返回False,說明文件是不可讀的。

    "+"表示可以同時讀寫某個文件

  (1)r+,讀寫【可讀,可寫】

  (2)w+,寫讀【可讀,可寫】

  (3) x+,寫讀【可讀,可寫】

  (4)a+,寫讀【可讀,可寫】

  "U"表示在讀取時,可以將\r \n \r\n自動轉化成(與r或r+模式同時使用)

    (1)U

  (2)r+U

  "b"表示處理二進制文件(如:FTP發送上傳ISO鏡像文件,linux可忽略,windows處理二進制文件時需標注)

    (1)rb或r+b

  (2)wbw+b

  (3)xbx+b

  (4)aba+b

  二、操作文件

   (1)def close(self):

    # real signature unknown; restored from __doc__

  關閉文件

   """

  (2def fileno(self):

    # real signature unknown; restored from __doc__

 文件描述符 """ 
  (3)def flush(self):
     # real signature unknown; restored from __doc__
    刷新文件內部緩沖區
     """
    flush() -> None. Flush the internal I/O buffer. """ pass
  (4)def isatty(self):
    # real signature unknown; restored from __doc__
    判斷文件是否是同意tty設備
    """
    isatty() -> true or false. True if the file is connected to a tty device.
     """
    return False
  (5)def next(self)
    # real signature unknown; restored from __doc__
    取下一行數據,不存在,則報錯
     """ x.next() -> the next value, or raise StopIteration """
     pass
  (6)def read(self, size=None):
     # real signature unknown; restored from __doc__
    讀取指定字節數據
    """
  
read()是讀取文件,可以指定讀取文件中字符串多少個字節,read(self,size=None)默認是全部讀取,在Python3中是按照字符來讀取的。讀取文件。
with open("test.log","r") as f:
  ret = f.read(3)

  print(ret)
  運行如下:

  我是你
  上述代碼我們以只讀模式打開文件,並且讀取文件中3個字符長度。
  (7)
def readline(self, size=None):
     # real signature unknown; restored from __doc__
    僅讀取一行數據
    """

   readlin(self,size=None)僅讀取一行,經常和readlines()混淆,原來readline()是僅讀取一行,readlines()按照換行符讀取到一個列表中。示例如
下:

with open("test.log","r") as f:
ret = f.readline()
res = f.readline(2)

  print(ret)
  print(res)
  運行結果如下:
  在Python中只能寫入字符串
  我喜
  上面代碼可以看出,readline()讀取了文件的第一行,並且readline(self,size)可以指定讀取第一行的字符個數;並且如果第一行讀取完成之后,是
不能同時進行讀取的,就會讀取第二行的內容。
(8)readable(self,*args,**kwargs)
   readable(self,*args,**kwargs)是判斷文件是否可讀,如果可以讀取就返回布爾值True;否則返回波爾值False.
  (9)
def seek(self, offset, whence=None)
    # real signature unknown; restored from __doc__ 指定文件中指針位置 """  
  seek(self,offset,whence=None)指定文件指針的位置,指定從哪里進行讀取,實例如下:

  with open("test.log","r") as f:
  #print(f.tell())
   #插入指針的位置
   f.seek(3)
   #read()是按照字符來讀取的
  ret = f.read(2)
   #tell是按照字節來讀取的,漢字有3個字節,兩個漢字有6個字節
   print(f.tell())
  #tell用來查看當前指針位置
   #seek指定當前指針位置
  print(ret)
  seek(self,offset,whence=None)是指定文件從那里開始讀取,以字節的方式。
  tell(self)用來查看當前文件的指針,就是讀取之后下一次從哪里開始讀取。
10.
def tell(self):
     # real signature unknown; restored from __doc__ 獲取當前指針位置 """ tell() -> current file position, an integer (may be a long integer). """ pass
  tell(self)是獲取當前文件的指針位置。
  11.
def truncate(self, size=None):
  #
real signature unknown; restored from __doc__ 截斷數據,僅保留指定之前數據 """ truncate([size]) -> None. Truncate the file to at most size bytes. Size defaults to the current file position, as returned by tell(). """ pass
truncate(self,size=None)獲取截斷數據之前的數據。使用seek()截斷數據,read()只讀取截斷文件之后的數據,之前的數據不管;而truncate()是讀取
截斷之前的數據。示例如下:
  

  with open("test.log","r+") as f:
  #print(f.tell())
  #插入指針的位置
  f.seek(6)
   #讀取截斷之后的文件內容
   #ret = f.read()
   #讀取截斷文件之前的文件內容
   res = f.truncate()
  #print(ret)
  print(res)
  truncate(self,size=None)是截取文件指針之前的內容,並把指針后面的文件刪除,只保留指針之前的文件信息。
12.
def seekable(self, *args, **kwargs):
     # real signature unknown 指針是否可操作 pass

13. def writable(self, *args, **kwargs):
    #
real signature unknown 是否可寫 pass  

   14.def write(self, *args, **kwargs):

     # real signature unknown

 寫內容 pass

   15.def writelines(self, sequence_of_strings):

      # real signature unknown; restored from __doc__

   將一個字符串列表寫入文件,示例如下:
  with open("test.log","w") as f:
  li = ["I love you.\n", "I need to work hard to do someing.\n", "In the Python,you can't to write int in the file"]
  f.writelines(li)
  上述代碼中,我們把一個字符串列表寫入了文件中。readlines(self,sequence_of_strings)以字符串列表的形式向文件中寫入內容。
16.
def readlines(self, size=None):
    # real signature unknown; restored from __doc__ 讀取所有數據,並根據換行保存值列表 """
  readlines(self,size=None)讀取文件所有數據,並且以換行符的形式存儲在一個列表中,與writelines()類似,實例如下:

  with open("test.log","r") as f:
  ret = f.readlines()

  print(ret)
  運行結果如下:
['I love you.\n', 'I need to work hard to do someing.\n', "In the Python,you can't to write int in the file"]
with open("test.log","r") as f:
ret = f.readline()
res = f.readline(2)

print(ret)
print(res)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM