关于我是否有必要关闭我在代码中明确打开的文件的一些想法。我来自C和C ++编程的背景,并开始通过Ruby导航。提前感谢您的反馈。
from_file, to_file = ARGV
script = $0
puts "Copying from #{from_file} to #{to_file}"
File.open(to_file, 'w').write(File.open(from_file).read())
puts "Alright, all done."
答案 0 :(得分:6)
除非您在python中使用类似with
语句的内容,否则不关闭文件总是不好的做法。
虽然脚本语言通常会在退出时关闭打开的文件,但是一旦完成文件就会更清楚 - 特别是在写入文件时。
Apparently Ruby有类似于python的with
:
File.open(from_file, 'r') do |f_in|
File.open(to_file, 'w') do |f_out|
f_out.write(f_in.read)
end
end
答案 1 :(得分:2)
这是一个较短的版本:
File.write to_file, File.read(from_file)
答案 2 :(得分:1)
此代码(Matheus Moreira)自动关闭文件:
File.write to_file, File.read(from_file)
此代码无法关闭文件:
File.open(to_file, 'w').write(File.open(from_file).read())
我猜也会自动关闭。
答案 3 :(得分:0)
这是一个很好的答案,但将输出文件放在外部块并使用<<<<<<< :
File.open(to_file, 'w') do |f_out|
f_out << File.open(from_file){|f| f.read}
end
注意阅读时你不需要'r'。