0

1 つの数値を含むファイルと、少なくとも 2 行のデータを含むファイルの 2 つのファイルを連結する必要があります。shutil.copyfile(file2,file1) と subprocess.call("cat " + file2 + " >> " + file1, shell=True) を試しましたが、どちらも同じ結果になります。単一の数字を持つファイルには整数と改行 (つまり 2 文字) が含まれているため、2 つのファイルをまとめると、file2 の最初の 2 文字が最後に追加されるのではなく上書きされます。「cat file2 >> file1」を使用してシェルから実行すると、これは発生せず、完全に機能します。

これが私が意味することです:

import numpy as np
from subprocess import call

f.open(file1)
f.write('2\n')
np.savetxt(file2,datafile,fmt)
call("cat " + file2 " >> " + file1, shell=True)

したがって、取得する代わりに:

2
data data data ...
data data data ...

私は得る:

2
ta data data ...
data data data ...

この問題の原因はわかりませんが、非常にイライラします。助言がありますか?

4

3 に答える 3

1

問題は、f をフラッシュしていないことです。"2\n" はまだファイル バッファーにあり、cat が完了した後、f が最終的に閉じられたときに他のデータを上書きします。しかし、これを行うためのより良い方法があります。numpy docs savetxtを読むと、ファイルハンドルを渡すことができます。Numpy は、既存のファイル ハンドルを使用してデータを書き込むことができます。2 番目の一時ファイルは必要ありません。

import numpy as np

with open(file1, "w") as f:
    f.write('2\n')
    np.savetxt(f, datafile, fmt)
于 2013-10-18T23:49:21.460 に答える