7

csv ライブラリを使用して、Python で同じ csv ファイルを同時に書き込み (ここでは実際に編集する必要があります) & 読み取ることはできますか?

csv ファイルを開いて編集および追加できますか?

もしそうなら、どのように?

4

1 に答える 1

1

短い答え: いいえ


長い答え: それは依存します

データの追加は、CSV ライターを使用して完全に可能です。"a"ファイルを追加モードで開くだけです。

with file("data.csv", "a" as fh:
    w = csvwriter(fh):
    w.writerow(...)

編集している列が固定長でない限り、ファイルの一部を挿入および削除する必要があるため、CSV ファイルの編集はそれほど単純ではありません。このcsvモジュールには、このための組み込みメソッドがありません。

元のファイルを開き、削除 (または元のファイルの名前を変更) して、同じ名前の新しいファイルを開くことができます。

with file("data.csv", "r") as rfh:
    os.remove("data.csv"):
    r = csvreader(rfh)
    with file("data.csv", "w") as wfh:
        w = csvwriter(wfh)
        # ... read from r and write to w

Linux では、元のファイルは、閉じられる時点まで読み取り可能なままであるため、事前に名前を変更する必要はありません。私は Windows にあまり詳しくないので、新しいファイルを作成する前に元のファイルの名前を変更し、閉じた後に古いファイルを削除する必要があるかもしれません。


もう 1 つの重要な点: 書き込みがデータの追加に限定されている場合、問題なく同じファイルの読み取りと書き込みを行うことができます。

with file("data.csv", "r") as rfh, file("data.csv", "a") as wfh:
    r = csvreader(rfh)
    w = csvwriter(wfh)
    # you can read using r and append using w

ただ注意してください - あなたのリーダーは、あなたがライターを使って書いたばかりの行を読むことができます. 非常に大きなファイルの原因となる無限ループに陥らないように注意してください。

于 2013-02-20T11:41:55.720 に答える