【问题标题】:Python readlines() 3.X to 2.XPython readlines() 3.X 到 2.X
【发布时间】:2019-02-15 16:52:56
【问题描述】:

我有一个最初为 python 3.5+ 编写的脚本。我需要将其转换为 2.6.2。 在脚本中,我使用了readlines(),我认为这两个版本之间的行为不同。 具体来说,我使用readlines() 从由换行符分隔的 txt 文件中检索数据。

这是一个片段:

t=open(supportID+"stmp.txt","r")
timeIn=(t.readlines())
a=(str(timeIn))
supportID=(t.readlines())
b=(str(supportID))
branch=(t.readlines())
c=(str(branch))
clientID=(t.readlines())
d=(str(clientID))
problem=(t.readlines())
e=(str(problem))
solution=(t.readlines())
f=(str(solution))
timeOut=(t.readlines())
g=(str(timeOut))

在我的 3.x 脚本中,我在每个 readlines() 中都有一个“1”,它根据需要执行,但是对于 2.x,这不起作用。如上所示,我已尝试输入值 1-7 和空白。

通过一些研究,我发现一些 2.x 用户使用with open(filename) 这是首选方法还是有办法更改我的原件以使其正常工作?

编辑: 所以我打算使用这种格式

with open(supportID+"stmp.txt") as t:
    for line in t:
        print(line)

我将其插入并工作,将每一行打印为我的 shell 中的一行。现在我想用它来将每一行分配给一个变量。

编辑 2: 这目前适用于我的环境,但不是此功能的最佳实践。读取每一行并将每一行分配给一个变量。

t=open(supportID+"stmp.txt","r")
lines = t.readlines()
t.close()
a=lines[0]
b=lines[1]
c=lines[2]
...

【问题讨论】:

  • 这不会像你在 Python 3 中所说的那样工作,它与这里的 Python 2 工作方式相同。 with 语句用于 Python 2 和 3,顺便说一句。我将在您的 Python 3 脚本中猜测您使用的是 readline 而不是 readlines
  • 使用x=readlines(1) 在我的环境中逐行读取 3x 的 tmp 文件。您是说with open(x) 将是 3.x 和 2.x 中的首选方法?
  • 你没有使用realines(1),你也不应该使用,这是bytes而不是lines的上限。你应该使用readline。是的,您应该始终使用上下文管理器(with 语句)来打开文件。
  • 我不确定你想让我解释什么。 “为什么”得到了回答,“因为这就是语言设计者决定论点应该是什么意思”。您应该查看文档。
  • 是的,这是逐行读取文件的惯用方式。

标签: python python-3.x python-2.x


【解决方案1】:

从文件中读取每一行并分配给一个变量我将此方法用于 python 2.6.2

t=open(supportID+"stmp.txt","r")
lines = t.readlines()
t.close()
a=lines[0]
b=lines[1]
c=lines[2]
...

【讨论】:

  • 除非你真的需要列表lines,否则没有真正的理由使用readlinesa = t.readline()
【解决方案2】:

试试这个代码:(我假设它适用于 python 版本 >= 2.6)

with open('lines.txt','r') as f:
    lines = f.readlines()
    for line in lines:
       print(line.strip())

【讨论】:

  • juanpa.arrivillaga。我不知道..“Newb 4 You BB”应该更好地解释他试图做什么。
  • @balderman 我的脚本中发生的事情是我正在使用存储在由换行符分隔的文件中的输入。然后,我让本节尝试将每一行作为单独的信息片段输入到另一个文件中。
猜你喜欢
  • 2015-09-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-15
  • 2019-05-03
  • 1970-01-01
  • 2020-11-03
相关资源
最近更新 更多