Python 文件读取

2 投票
3 回答
5315 浏览
提问于 2025-04-16 01:02
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")

撰写回答