【问题标题】:readline() returns nothing when run from certain file从某个文件运行时,readline() 不返回任何内容
【发布时间】:2019-12-13 13:43:38
【问题描述】:

我最近一直在从事一个项目,该项目需要我获取存储在文本文件中的值。简单的任务,对吧?

我已经尝试了几乎所有使用 readline() 的愚蠢解决方案,但是当它被打印出来时,什么都没有。 Debug 也告诉我它是空的。

由于我已经遇到过一些与 python 不一致的问题,因此我尝试在不同的 python 文件中使用 相同的函数,并且运行它完全符合它的预期。

我目前的解决方案(不是最好的,但目前我只想让它正常运行)是

count_file = "count.txt"
filehandle = open(count_file, 'r')
line = filehandle.readline()
print(line)

在名为“test.py”的文件中使用时效果很好。在我的“ma​​in.py”中使用时,它什么也不返回。是的,我在相同的上下文中使用了它,并在测试时暂时从主文件中删除了其他所有内容。

有人知道是什么原因造成的吗?我可以将其他内容粘贴到测试文件中并重命名它,但是 1. 这很烦人 2. 知道如何避免这种情况会很有用。

编辑:我还不确定,但我认为问题是由我的 IDE 引起的(我使用的是最新版本的 Pycharm Professional)。我通过删除并重新添加运行/调试配置解决了这个问题。

【问题讨论】:

  • 重命名文件应该没有区别(除非你在某处导入它)
  • 在使用 readline 之前,尝试filehandle.seek(0) 那么输出是什么?
  • 当您使用filehandle.read()filehandle.readlines() 时会发生什么?也许文件开头有一些隐藏字符

标签: python function methods readline


【解决方案1】:

如果你不指定文件路径,有时你会得到 None 的返回值。请检查“count.txt”文件相对于“main.py”脚本的路径/相对路径。

【讨论】:

  • 下次我遇到像这样奇怪的 python 行为时可能会尝试这个。我还不确定,但我认为问题是由我的 IDE 引起的(我使用的是最新版本的 Pycharm Professional)。我通过删除并重新添加运行/调试配置解决了这个问题。
【解决方案2】:

第一点:你的文件路径是相对的,所以它会根据当前的工作目录来解析,而不是取决于你的脚本的位置。

第二点:你读了一行,它确实可以是空的或者只包含不可打印的字符。

第三点:不使用 pycharm 运行代码。当你真正了解 Pycharm 背后的作用时,它可能会很好,但如果你不这样做,你确实会尝试一些意想不到的结果。仅使用命令行和一个简单的代码编辑器实际上要简单得多(尽管可能效率不高)并且不会造成混淆。

最后,别忘了你有一个交互式 Python shell。非常方便测试东西...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-02
    • 2020-11-29
    • 2018-07-08
    相关资源
    最近更新 更多