如何将Ruby中的put文本保存到txt文件中?
我在Ruby中写了一个madlib,并且想要将生成的madlib保存为一个txt文件。这是我写的,但由此产生的txt文件是空的:如何将Ruby中的put文本保存到txt文件中?
file=File.open("madlib_output.txt","a")
file.puts
file.close
有办法救一个脚本文件的输出,而不必修改脚本中的每个puts
。
最简单的方法是使用重定向在命令行路由输出。在该命令处运行带有> some_file
的脚本将将所有STDOUT路由到该文件。同样,使用> some_file 2>&1
会将STDOUT和STDERR路由到同一个文件。当代码等待输入时,这将不会捕获在gets
中输入的任何内容,因为这不会被视为程序输出。
如果你不介意改变你的代码一点,你可以暂时重新分配给一个文件改变stdout是什么解释的想法:
old_stdout = $stdout
File.open('output.txt', 'w') do |fo|
$stdout = fo
# ----
# your code goes here
puts "hello world"
# ----
end
$stdout = old_stdout
运行的是,再看看文件“ output.txt“,你会看到”hello world“,即使我们没有直接打印到文件fo
,就像我们通常使用fo.puts
那样。
做同样的事情有很多种方式,但它们相当于将STDOUT或STDERR指向其他地方,写入它们,然后重置它们。
通常情况下,如果我们从一开始就输出到文件打算,那么我们应该使用一个File.open
块:
File.open('output.txt', 'w') do |fo|
fo.puts "hello world"
end
的是,好处是该文件将被关闭块退出时自动。
我明白了这一点。它将打印到屏幕上的问题的标准输出更改为打印到文件。我在ruby中编写madlib的方式是将问题打印到屏幕上,用户输入答案,发生10次或更多次,然后获取用户的答案。投标的标准是屏幕。我认为我只是一个Ruby新手,在这个工艺代码中允许用户看到填充的madlib,并将该madlib保存到文件中。 – 2014-09-13 15:34:49
这是你在找什么?您可以追加模式打开madlib_output.txt文件,不管你想写将是块如内:“喜”
File.open("madlib_output.txt","a") do |f|
f.puts "hi"
end
没有。这是行不通的。 – 2014-09-13 15:44:29
在这种情况下......它打开现有的madlib_output文件,并附加“HI”它..这是你正在寻找的场景? – 2014-09-13 18:16:42
该文件不应该为空。应该有一个单一的空行。否则,Ruby安装中的某些内容会严重损坏。 – 2014-09-12 22:15:02
你说得对。我错过了。在文件中确实存在一个单一但令人失望的空行。勒叹。 – 2014-09-13 15:36:22