【问题标题】:How to redirect the output of print statement of (if-else) to a text file in Python如何将(if-else)的打印语句的输出重定向到Python中的文本文件
【发布时间】:2015-06-06 22:46:40
【问题描述】:

我有这段代码,并将输出打印到 txt 文件。 但是每当我打开一个文件时, f=open("out.txt",'w') 它显示出意外的缩进。我想我将代码行放在错误的位置。 任何人都可以帮忙。

if(cp<0):

    print("No Common Predecessor")
elif (posa < posb):

    if(posa<0):
        posa=0
    print("Common Predecessor: %s" %n[posa])
else:

    if(posb < 0):
        posb=0
    print("Common Predecessor: %s" %m[posb])

【问题讨论】:

  • 你用的是哪个版本的python?
  • 嗨,我使用的是 python 3.5

标签: python redirect python-3.x python-3.5


【解决方案1】:

在 Python3 中,输出重定向很简单

print(....., file = open("filename",'w'))

请参考docs

在您的特定情况下,您甚至可以使用 with open 语法,如

if(cp<0):

    print("No Common Predecessor")
elif (posa < posb):

    if(posa<0):
        posa=0
    with open('out.txt','w')as f:
        print("Common Predecessor: %s" %n[posa])
        f.write("Common Predecessor: %s" %n[posa])
else:

    if(posb < 0):
        posb=0
    with open('anotherout.txt','w')as f:
        print("Common Predecessor: %s" %m[posb])
        f.write("Common Predecessor: %s" %m[posb])

注意 - 最好使用'a'(附加)而不是'w',以防您重新执行程序。

【讨论】:

  • print("Common Predecessor: %s" %n[posa],file="out.txt") 这个需要写吗?收到此错误。 AttributeError:“str”对象没有属性“write”
  • 我需要添加什么吗?
  • 非常感谢。那行得通。刚刚找到的另一种解决方案,只需在代码顶部添加这两行,其余部分保持不变。也会起作用。 import sys sys.stdout = open('out.txt', 'w')
  • @BhargavRao 虽然'a' 通常优于'w',但最好避免笼统地概括。有时'w' 是正确答案。
  • @BobChao87 这就是我将其添加为子注释的原因!
猜你喜欢
  • 1970-01-01
  • 2014-01-20
  • 2018-07-03
  • 1970-01-01
  • 2018-01-27
  • 1970-01-01
  • 2011-11-01
  • 1970-01-01
  • 2011-05-05
相关资源
最近更新 更多