首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python文件读取

python文件读取
EN

Stack Overflow用户
提问于 2010-07-09 16:27:24
回答 3查看 5.3K关注 0票数 2
代码语言:javascript
复制
def file_open(filename):
    fo=open(filename,'r')
    #fo.seek(5)
    fo.read(3)
    fo.close()

file_open("file_ro.py")

我期望上面的程序从文件中返回前3个字节。但它不返回任何内容。当我在交互式python命令提示符中运行这些命令时,我得到了预期的输出!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-07-09 16:41:20

当您自己的答案打印读取的字节时,它不会返回这些字节,因此您无法在其他地方使用结果。此外,还有其他一些改进的空间:

  • file_open不是函数的好名字,因为它读取并返回文件中的字节,而不仅仅是打开它。
  • 即使fo.read(3)失败,你也应该确保关闭文件。您可以使用the with statement解决此问题。

修改后的代码可能如下所示:

代码语言:javascript
复制
def read_first_bytes(filename):
    with open(filename,'r') as f:
        return f.read(3)

用法:

代码语言:javascript
复制
>>> print read_first_bytes("file.py")
票数 7
EN

Stack Overflow用户

发布于 2010-07-09 16:35:14

fo.read()返回已读取的数据,并且您从未将其赋值给任何对象。你说的是“输出”,但是你的代码不应该输出任何东西。您是否正在尝试打印这三个字节?在这种情况下,您要查找的内容如下

代码语言:javascript
复制
f = open('file_ro.py', 'r')
print f.read(3)

您将在交互式提示符中得到“预期输出”,因为如果没有赋值给任何地方(如果不是None?),它就会像fo.read(3)行一样打印求值结果。或者其他类似的东西,也许有人能解释得更好。

票数 1
EN

Stack Overflow用户

发布于 2010-07-09 16:31:14

代码语言:javascript
复制
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")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3211031

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档