2010-07-09 96 views
2
def file_open(filename): 
    fo=open(filename,'r') 
    #fo.seek(5) 
    fo.read(3) 
    fo.close() 

file_open("file_ro.py") 

我期望上面的程序返回文件的前3個字節。但它什麼都沒有返回。當我在交互式python命令提示符下運行這些命令時 - 我得到預期的輸出結果python文件讀取

+0

我得到了answer..need存儲它的變量.. – 2010-07-09 08:31:45

回答

7

雖然自己的答案打印字節讀取,它不回報他們,所以你不能在其他地方使用的結果。此外,還有餘地其他一些改進:

  • file_open不是功能的好名字,因爲它可以讀取和文件,而不是隻打開它返回字節。
  • 即使fo.read(3)失敗,也應該確保關閉文件。您可以使用the with statement來解決此問題。

修改後的代碼可能是這個樣子:

def read_first_bytes(filename): 
    with open(filename,'r') as f: 
     return f.read(3) 

用法:

>>> print read_first_bytes("file.py") 
+0

+ 1用於指出'用'語句 – 2010-07-09 08:47:55

+0

for python2.5你可以'從__future__ import with_statement' – 2010-07-09 09:03:03

0
import sys 
def file_open(filename): 
     fo=open(filename,'r') 
     #fo.seek(5) 
     read_data=fo.read(3) 
     fo.close() 
     print read_data 
file_open("file.py") 
+1

回報的read_data會更好 – 2010-07-09 08:32:26

+0

謝謝...它會添加它 – 2010-07-09 09:47:15

1

fo.read()回報被讀取,你永遠不將其分配給任何數據。你正在談論'輸出',但你的代碼不應該輸出任何東西。你想要打印這三個字節嗎?在這種情況下,你正在尋找的東西像

f = open('file_ro.py', 'r') 
print f.read(3) 

你得到在互動提示「預期輸出」,因爲它打印如果它不被任何指定的評估結果(如果它不是None ?),就像在fo.read(3)一行。或者沿着這些方向,或許有人可以更好地解釋它。