数据处理与序列化:从输出分页到JSON转换
1. 输出分页处理
在处理大量输出时,直接将所有内容倾倒到终端会导致糟糕的用户体验。通过关闭指向 less 的 IO 对象,可以让 less 正常工作,它能知道被给予了多少行内容。调用 page_output 方法后输出的所有内容都会传递给 less 。
以下是一个示例代码 paging-output.rb :
page_output if STDOUT.tty?
500.times do |n|
puts "#{n + 1}: Hello from Ruby"
system "echo '#{n + 1}: Hello from a sub - shell'"
end
运行该示例时,首先会看到输出的顶部内容,即终端能容纳的行数。然后可以使用箭头键上下滚动文本(如果行很长或终端很窄,还能水平滚动)。与直接将一千行文本输出到终端相比,这是一个巨大的改进。
此外,在将输出重定向到 less 之前检查终端是否存在,不会破坏常规的 Unix 模型,因此脚本仍可用于管道操作。例如:
$ ruby paging-output.rb | wc -l
1000
这种行为与 Git 类似,有终端时会分页输出,没有则不做处理。而且实现成本基本为
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



