Python中的file和open簡述

help(file) help(open)

老規矩先看一下內置的幫助文檔怎麼描述file和open,畢竟官方文檔是最直接最準確的描述。python

Help on class file in module __builtin__:

class file(object)
 |  file(name[, mode[, buffering]]) -> file object
 |  
 |  Open a file.  The mode can be 'r', 'w' or 'a' for reading (default),
 |  writing or appending.  The file will be created if it doesn't exist
 |  when opened for writing or appending; it will be truncated when
 |  opened for writing.  Add a 'b' to the mode for binary files.
 |  Add a '+' to the mode to allow simultaneous reading and writing.
 |  If the buffering argument is given, 0 means unbuffered, 1 means line
 |  buffered, and larger numbers specify the buffer size.  The preferred way
 |  to open a file is with the builtin open() function.
 |  Add a 'U' to mode to open the file for input with universal newline
 |  support.  Any line ending in the input file will be seen as a '\n'
 |  in Python.  Also, a file so opened gains the attribute 'newlines';
 |  the value for this attribute is one of None (no newline read yet),
 |  '\r', '\n', '\r\n' or a tuple containing all the newline types seen.

簡單來講就是file是一個類,使用file('file_name', 'r+')這種方式打開文件,返回一個file對象,以寫模式打開文件不存在則會被建立。可是更推薦使用內置函數open()來打開一個文件,因此咱們再看一下open()的介紹:app

Help on built-in function open in module __builtin__:

open(...)
    open(name[, mode[, buffering]]) -> file object
    
    Open a file using the file() type, returns a file object.  This is the
    preferred way to open a file.  See file.__doc__ for further information.
(END)

首先open是內置函數,使用方式是open('file_name', mode, buffering),返回值也是一個file對象,一樣,以寫模式打開文件若是不存在也會被建立一個新的。函數

使用實例

In [8]: f1 = open('test.py')                                                                                                                                                                      

In [9]: f1.
f1.close       f1.fileno      f1.name        f1.readinto    f1.softspace   f1.writelines
f1.closed      f1.flush       f1.newlines    f1.readline    f1.tell        f1.xreadlines
f1.encoding    f1.isatty      f1.next        f1.readlines   f1.truncate    
f1.errors      f1.mode        f1.read        f1.seek        f1.write       

In [9]: f1.rea
f1.read       f1.readinto   f1.readline   f1.readlines  

In [9]: f1.readli
f1.readline   f1.readlines  

In [9]: f1.readlines()
Out[9]: 
['import logging\n',
 '\n',
 "logging.basicConfig(filename='test.log', level=logging.INFO)\n",
 "logging.info('Started')\n",
 "print 'x' + 1\n",
 "logging.info('Finished')\n"]

In [10]: f1.cl
f1.close   f1.closed  

In [10]: f1.close()

In [11]: f2 = file('test.py')                                                                                                                                                                     

In [12]: f2.
f2.close       f2.fileno      f2.name        f2.readinto    f2.softspace   f2.writelines
f2.closed      f2.flush       f2.newlines    f2.readline    f2.tell        f2.xreadlines
f2.encoding    f2.isatty      f2.next        f2.readlines   f2.truncate    
f2.errors      f2.mode        f2.read        f2.seek        f2.write       

In [12]: f2.read
f2.read       f2.readinto   f2.readline   f2.readlines  

In [12]: f2.readli
f2.readline   f2.readlines  

In [12]: f2.readlines()
Out[12]: 
['import logging\n',
 '\n',
 "logging.basicConfig(filename='test.log', level=logging.INFO)\n",
 "logging.info('Started')\n",
 "print 'x' + 1\n",
 "logging.info('Finished')\n"]

In [13]: f2.cl
f2.close   f2.closed  

In [13]: f2.closed()
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-13-24c97e0e079e> in <module>()
----> 1 f2.closed()

TypeError: 'bool' object is not callable

In [14]: f2.closed
Out[14]: False

In [15]: f2.close()

# 打開不存在的文件

In [18]: f3 = file('txt.txt', 'r+')
---------------------------------------------------------------------------
IOError                                   Traceback (most recent call last)
<ipython-input-18-3e9262877eea> in <module>()
----> 1 f3 = file('txt.txt', 'r+')

IOError: [Errno 2] No such file or directory: 'txt.txt'

In [19]: f3 = file('txt.txt', 'w+')

能夠看出來使用的時候區別也不大,不過注意Py3中已經沒有了file~這可能也是推薦使用open的一個很重要的緣由吧ui

相關文章
相關標籤/搜索