我一直在使用以下内容将某些内容附加到文件中。
File.write(file, 'something', mode: 'a') # In case of plain text
File.write(file, myvar, mode: 'a') # In case of variables
我有以下三个要求。
使用纯文本和变量
File.write(file, mytext1=var1, mode: 'a')
使用纯文本和变量的组合
File.write(file, mytext1=var1, mytext2=var2, mode: 'a')
同时使用多个变量
File.write(file, var1, var2, var3, mode: 'a')
这些代码不起作用。
在上面3点中,mytext1和mytext2是纯文本,可以是DNS1和DNS2。 var1,var2和var3是变量,比如192.168.1.10,192.168.1.11和192.168.1.12。
我可以通过删除行,添加一个字符串,并用gsub
替换字符串来实现这一点(其中变量有效),但我想知道是否有更短的方法来使用{{1 }}
答案 0 :(得分:2)
您可以使用IO#puts
作为
File.open(file_path, 'a') do |file|
file.puts [var1, "your text", var2] # or puts var1, "your text", var2
end
#puts
的文档是:
将给定对象写入ios,与
IO#prin
t一样。在任何尚未以换行符序列结束的记录分隔符之后写入记录分隔符(通常是换行符)。 如果使用数组参数调用,则将每个元素写入新行。如果不带参数调用,则输出单个记录分隔符。
或者,您可以使用File::write
:
content = [var1, var2, var3].join("\n")
File.write(file, content, mode: 'a')
content = ["mytext1=#{var1}", "mytext2=#{var2}"].join("\n")
File.write(file, content, mode: 'a')
答案 1 :(得分:0)
在Arup Rakshit的帮助下,我找到了两个简单的解决方案。
# using puts
File.open(file, 'a') do |j|
j.puts "DNS1=\"#{ip}\"";
end
# Using File.write
content = ("#{var1}\t#{var2}\t#{var3}\n")
File.write(file, content, mode: 'a')