2014-03-04 226 views
1
from sys import argv 

script, filename = argv 

txt = open(filename) 

print "Here's your file %r:" % filename 
print txt.read() 

當我運行此代碼時,使用文本文件的名稱作爲參數'ex15_sample.txt'然後它返回文本文檔中的內容。打開和讀取文件

但是,當我最後一行改爲:

print txt 

然後,它會顯示這樣的:

<open file 'ex15_sample.txt', mode 'r' at 0x004A6230> 

我真的不知道有什麼區別,因爲txt變量應該被打開文件。我知道read命令讀取文件,但在文檔中說open返回一個文件對象,我不確定這意味着什麼。

回答

5

open()函數將返回一個file object該表示確實是:<open file 'ex15_sample.txt', mode 'r' at 0x004A6230>

爲了得到文件的內容,你需要read()它。這就是爲什麼當你print txt.read()你得到你所期望的。

+0

但是什麼是文件對象?它的目的是什麼?! – Alias

+0

它的目的是將有關文件的操作包裝到文件對象中。例如,如果您打開的文件有3GB,您是否希望Python自動將其存儲在變量中?這會消耗大量內存,文件對象可以分塊讀取並執行不同的操作,而不需要將整個文件實際存儲在RAM中。 –