老規矩先看一下內置的幫助文檔怎麼描述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