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