【问题标题】:Why does Output to file not work but print statement does?为什么输出到文件不起作用但打印语句起作用?
【发布时间】:2012-09-04 20:13:27
【问题描述】:

我有以下代码:

for node, value in sorted(d.iteritems()):
    outfile.write([node] + value)
    print(node, value)

我阅读了一些关于此的不同 SO 帖子,但仍然有些困惑。 print 语句完美运行,在解释器中正确打印键和值。但是我想不出一种让 outfile.write() 语句在这里工作的方法。非常感谢任何澄清!

【问题讨论】:

  • nodevalue有哪些类型? (看起来value 是一个列表——对吗?它是一个字符串列表吗?)
  • (你可以举一个d的例子来说明这一点)。
  • 出了什么问题? sscce.org
  • @Marcin:这个问题已经被回答和接受了。

标签: python


【解决方案1】:

print 自动将给定变量转换为字符串(使用__repr__ 方法)。 file.write 没有。您仍然可以使用以下内容写入文件:

outfile.write("%s %s\n" % (node, value))

(我还添加了一个换行符)。但是,您没有在问题中明确nodevalue 的类型是什么。表达式[node] + value 暗示value 是一个列表。如果您希望列表以逗号分隔(正如您的问题标题所暗示的那样),您可以将它们组合起来并用逗号将它们连接起来,如下所示:

outfile.write(",".join(map(str, [node] + value)))

【讨论】:

  • 谢谢,大卫。节点是一个字符串,值是一个整数。但从技术上讲,value 不再需要是整数,因为它只是增加“node”出现次数的一种方式,现在结果存储在“d”中。
  • 如果value 是一个整数,为什么上面的代码中有[node] + value
  • 不是一个很好的理由,但我看到了这个解释并认为它也适用于我:stackoverflow.com/questions/6870103/…
  • 另外,再次感谢您的帮助。我刚刚尝试了 outfile.write("%s %s\n" %(node, value) 语句,它运行良好。谢谢!
  • 1) 在这种情况下,value 是一个列表,而不是一个整数。 2) 他使用的是 csv 编写器。到目前为止,我一直认为outfile 是一个文件对象——它是csv.writer 吗?如果是这样,你应该做一些不同于上述的事情
猜你喜欢
  • 2018-02-10
  • 1970-01-01
  • 2014-01-17
  • 1970-01-01
  • 1970-01-01
  • 2021-11-03
  • 1970-01-01
  • 2017-08-29
  • 1970-01-01
相关资源
最近更新 更多