ruby: 打开文件对象到标准输出
ruby: open File object to stdout
我对 Ruby 很陌生,我正在尝试打开一个指向 stdout
.
的 File
对象
我从 this question 知道重定向 stdout
指向 File
很简单,但是重定向 File
指向 [=14= 呢? ]?
我正在编写一个程序,我正在考虑为用户提供将输出的 部分 写入文件的选项。如果他们不选择该选项,则所有输出都应写入stdout
。
看到这个伪代码:
if output redirect option is selected
o = File.open('given filename','w')
else
o = File.open($stdout, 'w')
end
这是一个可能用例的伪代码:
puts 'Generating report for XYZ'
report = ReportGenerator::generateReport('XYZ')
o.puts report
如您所见,如果未指定输出重定向选项,我只希望 o
将报告放入 stdout
。 'Generating report' 消息,但是,我仍然需要打印到 stdout
,因此重定向 stdout
会很麻烦,特别是因为我有更多的消息和更多的地方(可能)在输出流之间交替。
o = File.open($stdout, 'w')
是我不确定的部分。
Ruby的$stdout
是一个响应puts
的IO
实例,所以你可以只写:
if output_redirect_option_is_selected
o = File.open('given filename','w')
else
o = $stdout.dup
end
dup
-ing $stdout
允许您关闭 o
而不影响 $stdout
:
o = $stdout.dup
o.close
puts 'bye' # works as expected
鉴于:
o = $stdout
o.close
puts 'bye' # raises IOError
我对 Ruby 很陌生,我正在尝试打开一个指向 stdout
.
File
对象
我从 this question 知道重定向 stdout
指向 File
很简单,但是重定向 File
指向 [=14= 呢? ]?
我正在编写一个程序,我正在考虑为用户提供将输出的 部分 写入文件的选项。如果他们不选择该选项,则所有输出都应写入stdout
。
看到这个伪代码:
if output redirect option is selected
o = File.open('given filename','w')
else
o = File.open($stdout, 'w')
end
这是一个可能用例的伪代码:
puts 'Generating report for XYZ'
report = ReportGenerator::generateReport('XYZ')
o.puts report
如您所见,如果未指定输出重定向选项,我只希望 o
将报告放入 stdout
。 'Generating report' 消息,但是,我仍然需要打印到 stdout
,因此重定向 stdout
会很麻烦,特别是因为我有更多的消息和更多的地方(可能)在输出流之间交替。
o = File.open($stdout, 'w')
是我不确定的部分。
Ruby的$stdout
是一个响应puts
的IO
实例,所以你可以只写:
if output_redirect_option_is_selected
o = File.open('given filename','w')
else
o = $stdout.dup
end
dup
-ing $stdout
允许您关闭 o
而不影响 $stdout
:
o = $stdout.dup
o.close
puts 'bye' # works as expected
鉴于:
o = $stdout
o.close
puts 'bye' # raises IOError