-4

私は次のことをしたいと思います:

  1. 複数の ascii ファイル (*.txt) をメモリに読み込みます。各ファイルの最初の 4 行をスキップする必要があります。これらのファイルの整数値は、構造化されていない連続した行ごとに書き込まれます。1 行あたりの値の数はさまざまであり、重要ではありません。
  2. メモリ内のすべてのデータを読み取ったら、それを 1 つのファイルに 1 行に 1 つの値、つまり 1 列に書き込む必要があります。値を書き込む前に、3 行のヘッダーを書き込む必要があります。

これを、ターミナル (Bash) から呼び出すことができるスクリプトとして持つ必要があります。私はあなたの助けに感謝します!

4

1 に答える 1

0

あなたの質問は非常に漠然としていますが、私はこれを思いつきました:

これらは私の仮定です:

  1. テキストファイルの各行の「値」は空白で区切られています
  2. 出力ファイルには、それらが含まれているファイルが渡された順序で値が含まれます。したがって、関数のパラメーターがf1f2f3およびoutfilepathである場合、 の値は のf1最初に表示されoutfilepath、 の値は のf22 番目に表示されoutfilepathます。

これらの仮定の下で必要なことを行う関数を次に示します。

def readwrite(infilepaths, outfilepath):
    with open(outfilepath, 'w') as outfile:
        outfile.write(threeLinesOfHeader + '\n')
        for infilepath in infilepaths:
            with open(infilepath) as infile:
                skipLines = 4
                for _ in range(skipLines):
                    infile.readline()
                values = itertools.chain.from_iterable(line.strip().split() for line in infile)
                outfile.write('\n'.join(values) + '\n')
    print 'done'

お役に立てれば

于 2012-11-07T04:08:05.790 に答える