1

以下のコードを使用して、ファイルに正しい情報を取得しています。コードは次のとおりです。

filename = raw_input('What would you like to name the file? ')

import csv

data = [frames]
out = csv.writer(open(filename,"w"), delimiter=' ',quoting=csv.QUOTE_MINIMAL)
out.writerows(data)

これにより、テキスト ファイルに次のようなものが生成されます。

"[255   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
   0   0]" "[  0 171 171 171 171 171 171 171 171 171 171 171 171 171 171 171 171 171
 171 171]" 

情報を次のようにしたいと思います。

255 255 255 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 []0 255 255 255 255 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

2 つの括弧は、情報の新しい行を示す文字を表します。私のテキスト エディタでは小さな四角形で、その文字が何なのかわかりません。

では、引用符と括弧を削除して、この別の文字を使用するにはどうすればよいでしょうか?

編集:

以下のコードを使用してみましたが、次のエラーが発生しました。

Traceback (most recent call last):   
  File "(stdin)", line 1, in (module)   
  File "backandforth3.py", line 154, in (module)
    out.write(' '.join(frame)) 
Type Error: sequence item 0: expect string, numpy.int32 found
4

2 に答える 2

4

テキスト エディタとしてメモ帳を使用していると思いますか? Unix スタイルの改行 ( \n) は、Windows の改行 ( ) のみをサポートするため、メモ帳ではボックスとして表示され\r\nます。そうは言っても、これはあなたが期待している出力を提供するはずです:

filename = raw_input('What would you like to name the file? ')

with open(filename, 'wb') as out:
    for frame in frames:
        out.write(' '.join(str(num) for num in frame))
        out.write('\r\n')

frames別のリストにラップする理由はありません。予想される出力が示すように、変数が数値のリストのリストであると仮定すると、これは正常に機能するはずです。

また、出力で説明した「ボックス」がどうしても必要な場合は、に置き換え'\r\n''\n'ください。

于 2012-07-28T02:55:11.660 に答える
0

関数framesを使用できるよりもnumpy配列である場合numpy.savetxt()

numpy.savetxt(filename, frames)

コードを修正するにcsvは、ファイルをバイナリ モードで開き、wb行末が破損しないframesようにし、別のリストにラップしないようにします。これは、既に 2D 配列のようです。

import csv

with open(filename,"wb") as f:
    writer = csv.writer(f, delimiter=' ', quoting=csv.QUOTE_MINIMAL)
    writer.writerows(frames)
于 2012-07-28T18:45:51.043 に答える