ruby:打开文件对象到stdout
发布时间:2020-12-17 02:48:44 所属栏目:百科 来源:网络整理
导读:我是 Ruby的新手,我正在尝试打开一个指向stdout的File对象. 我从this question知道将stdout重定向到指向文件非常简单,但是重定向文件指向stdout呢? 我正在编写一个程序,我正在考虑为用户提供将部分输出写入文件的选项.如果他们不选择该选项,则应将所有输出
我是
Ruby的新手,我正在尝试打开一个指向stdout的File对象.
我从this question知道将stdout重定向到指向文件非常简单,但是重定向文件指向stdout呢? 我正在编写一个程序,我正在考虑为用户提供将部分输出写入文件的选项.如果他们不选择该选项,则应将所有输出写入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 如您所见,如果未指定输出重定向选项,我只希望将报告添加到stdout.然而,’生成报告’消息,我仍然需要打印到stdout,因此重定向stdout将很麻烦,特别是因为我有更多的消息和更多的地方,我(可能)在输出流之间交替. o = File.open($stdout,’w’)是我不确定的部分. 解决方法
Ruby的$stdout是一个响应put的
IO 实例,所以你可以写:
if output_redirect_option_is_selected o = File.open('given filename','w') else o = $stdout.dup end 复制$stdout允许你在不影响$stdout的情况下关闭o: o = $stdout.dup o.close puts 'bye' # works as expected 然而: o = $stdout o.close puts 'bye' # raises IOError (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |