【问题标题】:Python's readline() function seeming not to work?Python 的 readline() 函数似乎不起作用?
【发布时间】:2014-07-17 20:41:04
【问题描述】:

由于某种原因,我下面代码中的 readline() 函数似乎什么也没打印。

fileName = input()
    fileName += ".txt"
    fileA = open(fileName, 'a+')
    print("Opened", fileA.name)

    line = fileA.readline()
    print(line)
    fileA.close()

我正在使用 PyCharm,我一直在尝试访问位于我唯一的 PyCharm 项目文件夹中的“file.txt”。它包含以下内容:

Opened file!!

我不知道出了什么问题,也找不到任何与我的问题相关的信息。任何帮助表示赞赏。

【问题讨论】:

    标签: python file readline


    【解决方案1】:

    因为您以a+ 模式打开文件,所以文件指针从文件末尾开始。毕竟,那是您通常会附加文本的地方。

    如果你想从顶部阅读,你需要在调用readline之前放置fileA.seek(0)

    fileA.seek(0)
    line = fileA.readline()
    

    这样做会将指针设置到文件的顶部。


    注意:阅读 cmets 后,您似乎只需要在运行 Windows 机器时执行此操作。使用 *nix 系统的人应该没有这个问题。

    【讨论】:

    • 这不会发生在我身上。我在文件中有一行,它可以很好地打印该行
    • 在 readline 之前添加 print fileA.tell()。该文件在 pos 0 处打开以供读取,如果您写入它将写入到末尾。` a+` 打开文件以进行写入和读取。
    • 我认为您不需要在 Unix 类型的系统上从头开始。当您使用“a+”时,Microsoft C 运行时将删除现有文件末尾的 CTRL-Z 字符,因此可能会在这样做之后将文件指针留在文件末尾。
    • @PadraicCunningham - fileA.tell 为我提供13(文件末尾)。您使用的是 *nix 系统吗?我目前在一台 Windows 机器上,所以这可能是一个仅限 Windows 的问题。
    • 是的 Ubuntu 14.05,一定是一个窗口问题! fileA.tell 给我0
    猜你喜欢
    • 2018-08-11
    • 2014-03-20
    • 2020-11-07
    • 2015-06-29
    • 1970-01-01
    • 2022-12-03
    • 2010-11-03
    • 2013-06-19
    • 1970-01-01
    相关资源
    最近更新 更多