Ruby on rails 将行从一个文本文件移动到另一个文本文件

Ruby on rails 将行从一个文本文件移动到另一个文本文件,ruby-on-rails,ruby,Ruby On Rails,Ruby,我有一个名字列表(names.txt),用行分隔。循环遍历每一行后,我想将其移动到另一个文件(processed.txt) 我当前的实现是通过每一行循环: open("names.txt") do |csv| csv.each_line do |line| url = line.split("\n") puts url # Remove line from this file amd move it to processed.txt end end 您可以这样做

我有一个名字列表(
names.txt
),用行分隔。循环遍历每一行后,我想将其移动到另一个文件(
processed.txt

我当前的实现是通过每一行循环:

open("names.txt") do |csv|
  csv.each_line do |line|
    url = line.split("\n")
    puts url
    # Remove line from this file amd move it to processed.txt
  end
end

您可以这样做:

File.open('processed.txt', 'a') do |file|
  open("names.txt") do |csv|
    csv.each_line do |line|
      url = line.chomp
      # Do something interesting with url...
      file.puts url
    end
  end
end
这将导致
processed.txt
包含使用此代码处理的所有URL


注意:使用此方法无法从
names.txt
中删除该行。有关更多信息,请参阅。如果这是此解决方案的真正目标,那么它将是一个更大的实现,需要定义一些设计注意事项。

谢谢。由于删除行是不实际的,是否可以在行的开头添加一个字符(将其标记为已完成?),如果
names.txt
文件(相当)小,我们可能会在处理后重写文件,忽略第一行。这个文件是大的还是可管理的?实际上,我想我只需要在循环的每次迭代中将当前行写入一个新文件。然后我就知道哪一行被处理了。这是一个更实际的方法吗?也许是。如果您的脚本在处理过程中失败,您需要能够从失败的地方开始,还是可以重新开始?我确实认为有可能建立你所需要的,这样你就不需要做出妥协。
names.txt
的文件大小将决定采用哪种方法最好,我想如果我知道它有多大(行或字节),我可以想出一些适合你的方法。
names.txt
的文件大小大约为50mb(30-80mb范围)。是的,它需要从失败的地方开始。它不能从头开始。谢谢
def readput 
  @names = File.readlines("names.txt") 
  File.open("processed.txt", "w+") do |f| 
    f.puts(@names) 
  end 
end