あなたはチャンク内のファイルを読み取る必要がメモリISNように、うんざりした。 この例では、テストファイルを作成し、フィルタされたバージョンのソースとして使用します。 ギガバイトの大きなテストファイルを作成する場合は、テストファイルを作成するために同じことをする必要があります。 ファイルに改行が含まれている場合、これは行を遅延読み込みする方が簡単かもしれませんが、私はそれがないと仮定します。
# create a testfile
patterns = ["AUG", "UAA", "UAG", "UGA","AAA", "BBB", "CCC"]
large_string = ""
1_000_000.times{large_string << patterns.sample}
File.write("rna.dat", large_string)
#read the file, remove some patterns and write in a new file
filtered = ["AUG", "UAA", "UAG", "UGA"]
File.open("filtered.dat", "w") do |out_file|
File.open("rna.dat", "r") do |in_file|
while chunk = in_file.read(3)
# Read small chunks of 3 bytes to limit memory usage
out_file.write chunk unless filtered.include? chunk
end
end
end
_「希望の結果が得られませんでした」_希望の結果は何ですか? 'rna'はどのように見え、' rna_convert'は何を返すのですか? – Stefan
ご意見ありがとうございます。所望の結果は、 "AUG"、 "UAA"、 "UAG"、 "UGA"が削除された文字の新しいシーケンスを有する.datファイルを生成することである。そして私の試行はすべて結果をもたらさなかった。私がこの方法を適用したいファイルの長さもかなり大きいです(.dat) –
"望みの結果が得られませんでした"というのは、私たちがあなたに助けてくれる十分なエラー記述ではありません。 *何がうまくいかない? *どのように動作しませんか?あなたのコードにはどんな問題がありますか?エラーメッセージが表示されますか?エラーメッセージとは何ですか?結果はあなたが期待している結果を得ていないのですか?あなたはどんな結果を期待していますか、そしてなぜ、あなたはどのような結果を得ていますか、そしてその二つの違いは何ですか?あなたが観察している行動は、望ましい行動ではありませんか?望ましい行動とは何か、なぜ行動が観察され、どのように違うのですか? –