【问题标题】:Python - writing multiple lists to filePython - 将多个列表写入文件
【发布时间】:2014-05-28 17:07:10
【问题描述】:

我正在尝试将我的输出写入一个新文件。所需的输出是 4 行,n 列。在终端中打印时效果很好,但是一旦我尝试将输出写入文件,它就会全部打印在一行上。

这是我在打印到文件之前一直有效的代码。我不知道为什么输出不一样。任何人都可以解释为什么它会有所不同,我该如何解决这个问题? (对不起,我是一个新手,所以简单的术语会很有帮助!)感谢任何帮助!

with open("file.txt", "w") as p:
pwm = f.readlines()
lis=[x.split() for x in pwm]
for x in zip(*lis):
    pwm = "\t".join(x)
    print str(pwm) # this prints in required format
    p.write(str(pwm)) # this prints all on one line

需要的输出:

0.224   0.128   0.536   0.009   0.007   0.085   0.013   0.097   0.058
0.339   0.152   0.136   0.002   0.002   0.009   0.876   0.031   0.829
0.250   0.421   0.299   0.004   0.065   0.845   0.027   0.834   0.007   
0.186   0.299   0.029   0.985   0.926   0.061   0.084   0.038   0.106

文件输出:

    0.224   0.128   0.536   0.009   0.007   0.085   0.013   0.097   0.058    0.339  0.152   0.136   0.002   0.002   0.009   0.876   0.031   0.829 etc...

【问题讨论】:

  • write 不会隐式添加换行符,print 会。
  • 写pwm后加p.write('\n')

标签: python list io


【解决方案1】:

使用以下内容:

p.writelines(str(pwm))

【讨论】:

  • 您还可以使用此函数将多行写入文件。
【解决方案2】:

文件对象的write 方法只是将文本添加到文件末尾。如果你想让每一行单独一行,你需要在字符串的末尾添加一个换行符:

p.write(str(pwm) + "\n")

您不必对 print 执行此操作,因为它会隐含地为您执行此操作。

【讨论】:

  • 谢谢你成功了,现在我明白为什么会这样了!当它允许我时,我会接受你的回答:)
【解决方案3】:

您可以显式编写换行符,也可以将print 用于文件重定向。

p.write(str(pwm) + "\n")

print >> p, pwm

【讨论】:

    猜你喜欢
    • 2023-03-15
    • 2015-05-29
    • 2018-04-02
    • 2013-11-24
    • 2017-07-20
    • 2014-11-22
    • 2012-12-11
    • 1970-01-01
    相关资源
    最近更新 更多