Ruby将输出重定向到文件

Ruby将输出重定向到文件,ruby,io-redirection,Ruby,Io Redirection,如何将此put方法的输出重定向到文件 File.open('links.txt').readlines.each do |li| puts li if (li['PersonNight']) end 我尝试了一些解决方案,但没有一个有效。您也可以显式地写入文件(打开文件并写入) 或者使用常规unix机器从脚本外部重定向 ruby my_script.rb > target.file 您可以为要写入的文件调用对象: File.open('outputfile.txt', 'at')

如何将此
put
方法的输出重定向到文件

File.open('links.txt').readlines.each do |li|
  puts li if (li['PersonNight'])
end

我尝试了一些解决方案,但没有一个有效。

您也可以显式地写入文件(打开文件并写入)

或者使用常规unix机器从脚本外部重定向

ruby my_script.rb > target.file
您可以为要写入的文件调用对象:

File.open('outputfile.txt', 'at') do |out|
  File.open('links.txt').readlines.each do |li|
    out.puts li if (li['PersonNight'])
  end
end
或者,您可以通过将输出文件分配给
$stdout
,重定向的输出:

old_stdout, $stdout = $stdout, File.open('outputfile.txt', 'at')

File.open('links.txt').readlines.each do |li|
  puts li if (li['PersonNight'])
end

f, $stdout = $stdout, old_stdout
f.close

但这真是个坏主意。您可以重定向系统中所有代码的
放置

使用块或至少
确保
:)@mudasobwa:是的,我不想使用他们的全部代码,这就是原因。:)但你是对的,我们应该展示良好的实践。“它们都不起作用”不是一个足够精确的错误描述,我们无法帮助你。什么不起作用?它怎么不起作用?你收到错误信息了吗?错误消息是什么?你观察到的行为与你预期的行为不同吗?预期的行为是什么?你正在观察的行为是什么?它们有何不同?请阅读“”。如果你尝试了什么,告诉我们是什么,并问一个具体的问题。没有它,你似乎没有真正尝试。将输出路由到文件在IO和文件文档中。我必须做第二次,这在需要将所有输出定向到某个位置的情况下很有用,但在命令行中使用
的干扰性较小。
old_stdout, $stdout = $stdout, File.open('outputfile.txt', 'at')

File.open('links.txt').readlines.each do |li|
  puts li if (li['PersonNight'])
end

f, $stdout = $stdout, old_stdout
f.close