1. 程式人生 > >【IO】01、文件對象

【IO】01、文件對象

文件io

一、打開和關閉文件

1、文件打開和關閉

In [1]: help(open)

Help on built-in function open in module io:

open(file, mode=‘r‘, buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
    Open file and return a stream.  Raise IOError upon failure.
    
    ========= ===============================================================
    Character Meaning
    --------- ---------------------------------------------------------------
    ‘r‘       open for reading (default)
    ‘w‘       open for writing, truncating the file first
    ‘x‘       create a new file and open it for writing
    ‘a‘       open for writing, appending to the end of the file if it exists
    ‘b‘       binary mode
    ‘t‘       text mode (default)
    ‘+‘       open a disk file for updating (reading and writing)
    ‘U‘       universal newline mode (deprecated)
    ========= ===============================================================     
    
In [6]: f = open("/tmp/shell/test.txt")  # 打開一個文件,獲得一個文件對象

In [7]: type(f)
Out[7]: _io.TextIOWrapper

In [8]: f
Out[8]: <_io.TextIOWrapper name=‘/tmp/shell/test.txt‘ mode=‘r‘ encoding=‘UTF-8‘>

In [9]: f.mode  # 文件對象的打開模式
Out[9]: ‘r‘

In [11]: f.name  # 文件名 
Out[11]: ‘/tmp/shell/test.txt‘

In [13]: f.read()  # 讀取文件的內容
Out[13]: ‘Hello World!\nI love python\n‘

In [15]: f.readable()  # 是否可讀
Out[15]: True

In [16]: f.writable()  # 是否可寫
Out[16]: False

In [17]: f.closed  # 文件對象是否關閉
Out[17]: False


In [20]: f.close()  # 關閉文件對象

In [21]: f.name
Out[21]: ‘/tmp/shell/test.txt‘

In [22]: f.read()  # 關閉後不能再查看了
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-22-bacd0e0f09a3> in <module>()
----> 1 f.read()

ValueError: I/O operation on closed file.

In [25]: f.closed
Out[25]: True

文件對象的操作和打開方式是相關


2、open函數mode參數詳解

控制讀寫的模式:

‘r‘ :即mode=r,默認,只讀打開,不可寫;當文件不存在時,會拋出FileNotFoundError
‘w‘:只寫打開,不可讀;會清空原文件,當文件不存在時,會新建
‘x‘ :僅新建文件,只寫打開,不可讀;當文件存在時,會拋出FileExistError
‘a‘ :追加內容到文件末尾(最後一行的下面一行),只寫,不可讀;當文件不存在時,會新建


從讀寫的方面來看,只有r可讀不可寫,其它都是可寫不可讀

當文件不存在時,只有r拋出異常,其它的都創建新文件

當文件存在時,只有x拋出異常

從是否影響文件原始內容來看,只有w會清空文件



‘b‘ :以二進制的方式打開,
‘t‘
‘+‘
‘U‘




【IO】01、文件對象