出于某种原因,我无法通过最后一行打印任何内容。
prev_std = STDOUT
$stdout = File.open(reportname, 'w')
# Several things happen to print to STDOUT here
$stdout = STDOUT
# Tell them that the report was written
puts "Report written to #{ reportname }"
# Slurp in the report ( FIXME )
reporttext = File.open(reportname, 'r') { |f| f.read }
# Print out the report after ( FIXME )
puts reporttext
我刚刚将报告写入文件,但不知怎的,我无法将其读回屏幕。我在代码中使用完全相同的字符串来引用这两种情况下的文件。检查shell提示符证明文件已正确写入,但我仍然无法将其打印到屏幕上。
我在这里做错了什么?
答案 0 :(得分:1)
看起来问题来自文件未关闭。更改$stdout
不会关闭它用来引用的文件对象。在将其重新分配给旧标准输出之前,将$stdout.close
添加到该行。