2017-01-10 11 views
0

私は、テキストファイルに値を挿入できるプログラムを作成しており、効率的な方法を考え出すのに問題があります。目標は、Z軸上のすべての変更の前にM220コマンドを持つことです。このコマンドは、全体のプログラムにいくつのZの変更があるかに基づいています。現在私が持っているアイデアは、次のとおりです。gcode挿入用のより効率的なテキストエディタ

Take the text file, and transfer it into an array 
    Read through each character to see if there is a Z 
    Count the total amount of Z's 
    Start at the beginning of the array 
    Create a new array that copies the first one 
    If a Z value is found, insert a line before it with the M220 command 
    Overwrite the text file with the new array 

これは私が20MbのオーバーTXTファイルを扱うことがしようと思って、特に以来、私には非常に非効率です。これを行うには明らかに良い方法がありますか?

+0

20MBは実際には大きすぎません。ファイルの塊をメモリに読み込んでZをスキャンし、変更されたチャンクを一時ファイルに書き込んだら、元のファイルを削除して一時ファイルの名前を元のファイル名に戻すことができます。 – JJF

答えて

1

ファイル全体をメモリに格納する必要はなく、行単位でファイルを読み取ることができます。

最初のパス:ファイルを1行ずつ読み込み、Zを数えます。

第2パス:ファイルを1行ずつ読み込み、各行をテンポラリファイルに書き込みます。 M220コマンドで新しい行を挿入する必要があるかどうかを確認する前に、行を書き込む前にチェックします。はいの場合、現在の行の前にこの行を書きます。

その後、元のファイルを削除し、元のファイル名にテンポラリーファイルをコピーすることができます。

関連する問題