0
私の最終目標は、ファイルの値をデータベースから取り戻しているレコードと比較することです。rubyファイルの内容と文字列を比較する
私は、次のような構造を持つテキストファイルがあります:私は、一つ一つそれらを介してデータベースとループからレコードを引き戻す
123,55,66
555,99,109
324,100,800
467,200,300
を。
sth.fetch do |row|
validate = "#{row[0]},#{row[20]},#{row[21]}"
names = File.readlines('results.txt')
matches = names.select { |name| name[/#{validate}/i] }
p "Result matches as expected: #{matches}"
end
したがって、上記の例と同じフォーマット文字列を作成します。次に、ファイルのすべての行を読み取り、配列に移動して比較します。だから、これは私にすべてのマッチを与えるが、ファイルに存在しない行を私に教えてくれないのは素晴らしいことですか?
だから代わりに私が
sth.fetch do |row|
File.open('results') do |f|
f.each_line do |line|
if line == validate
puts "detail: #{line}"
else
puts "detail: #{validate}"
end
end
end
end
を試してみました。しかし、これはその後、すべての行に対して、各行を読み取り、それは半分私が後だものを実現して比較します。
私は 'validate'文字列を取得し、ファイルの内容を読み込んで行が一致するかどうかを確認し、一致するものを出力したいと考えています。あるいは、レコードを取り戻してもそれがファイルと一致しない場合は、メッセージに一致しないようにするだけです。
おかげ
をしようとするだろう= File.readlines( 'RESULTS.TXT')'や 'File.open( '結果')'ループ内にありそれはCPU /ディスクの時間を無駄にしているので、悪い考えです。ループ外のデータを読み取り、ループ内の変数にアクセスします。 'File.foreach(...)'は 'File.open(...)do | f |より簡単で明瞭です。 f.each_line do ... ' –
ファイルはどれくらい読み込まれていますか?あなたはミスよりも多くのファイルを持っていますか、それとも逆のファイルですか、あるいはスプレッドですか? –
かなり広がっていて、現在は何百もの人がいないので、あまりにも大きい –