1

私が持っているコード

i = 0
while i < len(newsymbolslist):
    time = 102030
    data = 895.233
    array = [time], [data]
    with open('StockPrice.csv', 'wb') as file:
        file_writer = csv.writer(file)
        file_writer.writerow(array)
        file.close()
    i += 1

私は Python にかなり慣れていないので、前のコードが一番上の行にのみデータを入力する理由が 100% わかりません。私の推測では、ファイルを開いているため、反復ごとにファイルをオーバーライドする必要がないことがわかりません。理論的にはそれを修正する方法を知っています(それが問題である場合)。構文に問題があるだけです。

私の推測: 反復 (var i) を使用して、ファイルに書き込む行数をカウントします。

4

2 に答える 2

4
with open('StockPrice.csv', 'wb') as f:
    file_writer = csv.writer(f)
    for s in newsymbolslist:
        time = 102030
        data = 895.233
        array = [time], [data]
        file_writer.writerow(array)

最初の推測は正しいです。モードでファイルを開くたび'wb'に、ファイルが事実上削除され (存在する場合)、新しい空のファイルが作成されます。while-loopそのため、ファイルの内容に影響を与えるのは、最後の繰り返しで書き込まれた内容だけです。

解決策は、(ループが始まる前に) ファイルを 1 回開くことです。

with ステートメントでファイルを開くと、Python がwith-block. したがって、自分自身に電話する必要はありませんf.close()

于 2013-05-25T01:08:33.863 に答える
2

ドキュメントから:

modeの最も一般的に使用される値は'r'、読み取り'w'用、書き込み用 (ファイルが既に存在する場合はファイルを切り捨てる)、および'a'追加用 (...) です。

既存のファイルの最後に書き込みたい場合は、追加モードで開きます'a'。(ただし、この場合、はい、ループを再構築する方が良い答えです。)

于 2013-05-25T01:15:30.977 に答える