我有一些ruby代码应该执行并创建一些带有输出的文件。
当我一次运行代码时,我根本没有任何问题,但是当我尝试在循环中运行它时,第一个文件出现正常输出,但是从第二个文件foward,他们都遵循一种奇怪的模式。
如果我运行它三次,第一次输出正常,第二次输出第一个信息,然后输出它应该有的信息,第三个信息首先输入第一个和第二个输出,然后是第一个输出。正常输出。
这是我用来读取文件的代码:
File.open(path, 'rb') { |file| file.read }
这是我用来写文件的代码:
File.open(path + '.txt', 'w') do |f|
f.write text
end
这是我多次运行代码的一部分:
while i < 4 do
sample_path = "#{path}/samples/sample#{i}.html.erb"
controller_grabber.grab_controllers(sample_path)
answer_string = file_manager.read_file("#{path}/samples/sample#{i}_expected_answer.txt").gsub(/\s+/, "")
tool_answer = file_manager.read_file("#{path}/outputs/#{file_manager.get_file_name(sample_path)}_output.txt").gsub(/\s+/, "")
i += 1
end
在grab_controllers上我调用了一次write文件。我真的不知道原因是什么,试图创建一个新的controller_grabber和file_manager实例,但它没有工作
这是我得到的输出的一些例子
第一个预期结果:
[name: Show, type: @otml_file]
[name: Back, type: otml_files_path]
结果:
[name: Show, type: @otml_file]
[name: Back, type: otml_files_path]
第二个预期结果:
[name: Inicio, type: root_path]
[name: Producto, type: productos_index_path]
[name: Venta, type: venta_index_path]
[name: Proveedor, type: proveedor_index_path]
[name: Clientes, type: cliente_index_path]
第二个结果:
[name: Show, type: @otml_file]
[name: Back, type: otml_files_path]
[name: Inicio, type: root_path]
[name: Producto, type: productos_index_path]
[name: Venta, type: venta_index_path]
[name: Proveedor, type: proveedor_index_path]
[name: Clientes, type: cliente_index_path]
答案 0 :(得分:0)
这似乎是香蕉。我猜你在一些省略的代码中对文件有一个挥之不去的引用 - 用当前的代码量很难看到。
当我阅读,写作,循环阅读时,我得到你期望的结果:
path = 'filename'
text = 'something'
10.times {
p File.open(path, 'rb') { |file| file.read }
result = File.open(path, 'w+') do |f|
f.write text
end
p result
p File.open(path, 'rb') { |file| file.read }
}
如果您确定要在每次传递时覆盖该文件,那么每次都应该delete该文件。
或者给他们不同的名字......
也许有更多信息我会更有帮助。