【问题标题】:How do I open a text file in Python?如何在 Python 中打开文本文件?
【发布时间】:2016-10-17 22:22:16
【问题描述】:

目前我正在尝试打开一个名为“temperature.txt”的文本文件,我使用文件处理程序保存在我的桌面上,但是由于某种原因我无法让它工作。谁能告诉我我做错了什么。

#!/Python34/python
from math import *

fh = open('temperature.txt')

num_list = []

for num in  fh:
    num_list.append(int(num))

fh.close()

【问题讨论】:

  • 请告诉我们您遇到的错误。在文本文件中对您的数据进行简短描述也会有所帮助。
  • FileNotFoundError - tempertature.txt 应与您的 .py 文件位于同一目录中。 ValueError - 尝试将字符串(从文件读取)转换为 int 但它不是 int。 Can't see output - 打印您的列表。
  • 您的代码没有问题。如果您需要帮助 - 您也需要向我们提供错误信息。不过,与以前的 cmets 一样,问题很可能是文件不存在(或者脚本在错误的目录中查找它)或者文件中的行不只是数字(例如,在即使文件正确打开,文件末尾也可能导致for循环出错)

标签: python python-3.x filehandler


【解决方案1】:

这样做的pythonic方法是

#!/Python34/python

num_list = []

with open('temperature.text', 'r') as fh:
    for line in fh:
        num_list.append(int(line))

您不需要在此处使用 close,因为 'with' 语句会自动处理。

如果您对列表推导感到满意 - 这是另一种方法:

#!/Python34/python

with open('temperature.text', 'r') as fh:
    num_list = [int(line) for line in fh]

在这两种情况下,“temperature.text”都必须在您的当前目录中。

【讨论】:

  • 您在两个示例中的文件名后面都漏掉了一个引号。
  • @shadow - 通过快速编辑轻松修复 :-) - 全部完成。
  • 这样好多了:)
  • @shadow - 本网站的约定是您自己进行类似的小修改 - 只要修改纠正了错误。我认为您现在有足够的代表来编辑其他人的帖子。编辑将被审查,所以你不能破坏任何东西....但是感谢你让我知道 - 非常感谢。
  • 通常网站不会让你做这么小的修改,我觉得让原始发布者知道对他们下次有帮助。但是谢谢你提醒我我有这个能力。
【解决方案2】:

你只需要在 fh 上使用 .readlines()

像这样:

#!/Python34/python
from math import *

fh = open('temperature.txt')

num_list = []

read_lines = fh.readlines()
for line in read_lines:
    num_list.append(int(line))

fh.close()

【讨论】:

  • 你的意思是一行一行
  • 这不是真的。调用 readlines 会将整个文件加载到内存中 - 但不理会它一次只会在内存中保留一行,这样处理更大的文件时效率会更高。
  • 正如@shadow 所说 - 不需要使用“readlines”。只需执行 'for num in fh' 将遍历文件中的每一行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-09-14
  • 2011-12-20
  • 2014-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-29
相关资源
最近更新 更多