9

以下のコードは、私がこれまでに持っているものです。.csv に書き込むと、以前にファイルに書き込んだ内容が上書きされます。以前のテキストが消去されないように、ファイルに書き込むにはどうすればよいですか。(私のコードの目的は、人を持つことです。名前を入力し、プログラムにそれらを記憶させます)

def main(src):
    try:
        input_file = open(src, "r")
    except IOError as error:
        print("Error: Cannot open '" + src + "' for processing.")
    print("Welcome to Learner!")
    print("What is your name? ")
    name = input()
    for line in input_file:
        w = line.split(",")
        for x in w:    
            if x.lower() == name.lower():
                print("I remember you "+ name.upper())
            else:
                print("NO")
                a = open("learner.csv", "w")
                a.write(name)
                a.close()
                break
if __name__ == "__main__":
    main("learner.csv")
4

3 に答える 3

15

次回はファイルに追加する必要があります。これは、ファイルを追加モードで開くことで実行できます。

def addToFile(file, what):
    f = open(file, 'a').write(what) 
于 2012-11-02T22:28:33.413 に答える
11

open("learner.csv", "w")に変更open("learner.csv", "a")

open の 2 番目のパラメーターはモードで、w は書き込み、a は追加です。append を使用すると、ファイルの最後まで自動的にシークします。

于 2012-11-02T22:31:21.470 に答える
6

書き込みモード ('w') ではなく、追加モード ('a') でファイルを開く必要があります。Pythonのドキュメントでは、利用可能なさまざまなモードについて説明しています。

また、with キーワードの使用を検討することもできます。

ファイル オブジェクトを扱うときは with キーワードを使用することをお勧めします。これには、途中で例外が発生した場合でも、スイートの終了後にファイルが適切に閉じられるという利点があります。

>>> with open('/tmp/workfile', 'a') as f:
...     f.write(your_input)
于 2012-11-02T22:31:23.843 に答える