Python - 将多个列表写入文件

时间:2014-05-28 17:07:10

标签: python list io

我正在尝试将输出写入新文件。所需的输出是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...

3 个答案:

答案 0 :(得分:2)

使用以下内容:

p.writelines(str(pwm))

答案 1 :(得分:1)

文件对象的write方法只是将文本添加到文件末尾。如果您希望每行都有自己的行,则需要在字符串末尾添加换行符:

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

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

答案 2 :(得分:0)

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

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

print >> p, pwm