1

さて、私は自分のエラーとそれが何を意味するのかを知っています。しかし、誰かが文字列以外の引数のセットをファイルに書き込む方法を教えてもらえますか?

エラーを生成するコード:

with open('count.txt', 'w') as count:
for k,v in makeddict.items():
    print "MID -",k + ':', Counter(v)
    readout = "MID -",k + ':', Counter(v)
    count.writelines(readout)

Counterこの標準形式の行をファイルに書き込もうとすると、それがエラーの原因であることを完全に理解しています。そこで、代わりにstdoutをファイルに書き込もうとしました(以下を参照)。

コードを修正してみてください:

for k,v in makeddict.items():
    print "MID -",k + ':', Counter(v)
    sys.stdout = open('count.txt', 'w')

これは機能し、ファイルに書き込むための1行(stdoutの最初の行)を取得しました。ただし、ファイル内の他の19行すべてを表示したいと思いcount.txtます。

では、コードですべてのstdoutをファイルに出力する方法を誰かに教えてもらえますか?そこに投げ込むべき.appendですか?(キックのために今これを試してみます)。

または、ファイルに。のような文字列以外の引数がある場合に、ファイルに「印刷ブロック」を印刷するためのより良い方法を誰かに教えてもらえますかCounter

4

2 に答える 2

0

sys.stdout = open('count.txt', 'w')ファイルを切り捨てるため、以前に行われた各変更は、呼び出すときにクリアされます。

あなたがしているべきです:

sys.stdout = open('count.txt', 'w')
for k,v in makeddict.items():
    print "MID -",k + ':', Counter(v)

または、

with open('count.txt', 'w') as f:
    for k,v in makeddict.items():
        print >> f, "MID -",k + ':', Counter(v)
于 2012-12-20T02:05:28.920 に答える
0

Thomas Orozcoの答えに加えて、あなたのreadout変数は文字列ではなくタプルを保持しているので、結果はあなたが望むものではないと思います。次のようなものを試してみてください。

readout = "MID -" + k + ':' + Counter(v)

これは、すべてのパーツから文字列を作成しようとします。__str__ただし、またはメソッドを持たないオブジェクトでは失敗します__repr__

于 2012-12-20T02:16:16.927 に答える