【问题标题】:Why doesn't readline() return original text?为什么 readline() 不返回原始文本?
【发布时间】:2019-10-16 09:15:46
【问题描述】:

我正在尝试读取文件并收集文件中的数据。我正在查看我的目录,向文件夹移动,然后查看那里。

我想读取文件中的每一行。

我读到我的输出看起来像二进制。我试过在stackoverflow上环顾四周。我还确定我正在阅读的文件是 txt 文件。

import os

def ratio(filename):

    cwd = str(os.getcwd())    
    cwd = cwd[:-8]
    cwd = cwd + "Equities\\" + str(filename) + ".txt"
    file = open(cwd, "r")
    line_1=str(file.readline(4))
    print(line_1)

readline(4) 应该返回:

现有资产

我的readline(4) 函数返回:

ÿþA\000

【问题讨论】:

  • readline(4) 不读取第 4 行。在 python 2 中,它指定了可以从行中读取的最大字节数。当你这样称呼它时,它会从第一行读取一个不完整的字符。
  • 有更好的功能使用吗?谢谢!
  • 很难从你的问题中理解你想做什么。如果你真的想读取第四行(不移动偏移),你可以使用 readlines(),它返回你的行列表,然后在单元格 [3] 处读取结果
  • 我会使用next(itertools.islice(file, 3, None)); islice 将跳过第 0、1、2 行,因此 next 返回第 3 行(第四行)。
  • -8 应该跳过什么?您可能希望使用 os.path 中的函数来操作文件路径,而不是将它们视为字符串。

标签: python python-2.7 file readline


【解决方案1】:

如果您正在尝试读取特定行,请尝试:

lines=file.readlines()
text = lines[4]

readline 一次读取一行。您可以改为使用 readlines 将所有行一次读入一个列表。

正如我在评论 readline(4) 中提到的,只从第一行读取 4 个字节,而不是第四行。

【讨论】:

  • 函数现在返回 '\x00\n'
  • 你试过file=open('cwd','r',encoding='utf-8')吗?
  • uiltins.UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte
  • 您的文件可能未以 utf-8 编码。看看docs.python.org/2.4/lib/standard-encodings.html 看看它可能是什么。它可能是一种Windows 格式。你可以试试看它是否有效。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-07
  • 2019-02-07
相关资源
最近更新 更多