Python 文件读取
def file_open(filename):
fo=open(filename,'r')
#fo.seek(5)
fo.read(3)
fo.close()
file_open("file_ro.py")
我希望上面的程序能从文件中返回前3个字节。但是它什么都没返回。当我在交互式的Python命令提示符下运行这些代码时,却得到了预期的输出!
3 个回答
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
fo.read()
是用来读取数据的,但你并没有把读取到的数据存储到任何地方。你提到的“输出”,其实你的代码并不需要输出任何东西。你是想打印那三字节的数据吗?如果是这样的话,你需要找类似下面的代码:
f = open('file_ro.py', 'r')
print f.read(3)
你在交互式提示符中看到的“预期输出”,是因为如果结果没有被存储到其他地方(而且不是 None
),它会自动打印出来,就像 fo.read(3)
这一行一样。或者说得更简单点,可能还有人能解释得更清楚。
7
虽然你自己的答案是打印了读取的字节,但它并没有返回这些字节,所以你不能在其他地方使用这个结果。此外,还有一些其他可以改进的地方:
file_open
这个函数名不太合适,因为它不仅仅是打开文件,而是从文件中读取并返回字节。- 你应该确保即使
fo.read(3)
失败了,也能关闭文件。你可以使用with语句来解决这个问题。
修改后的代码可能看起来像这样:
def read_first_bytes(filename):
with open(filename,'r') as f:
return f.read(3)
使用方法:
>>> print read_first_bytes("file.py")