1

さて、私がやりたいことは、CSV ファイルに何かを書き込むことです。私はこれをやっています:

directory = open('docs/directory.csv', 'a+', encoding='utf-8')
name = input('Please insert a name: ')
phone = input('Please insert a phone number: ')

directory.write(name + ',' + phone + ',\n')

print(directory.read())

'a+'ファイルの最後にすべての行を追加するために使用します。ここではすべて問題ありません。スクリプトを実行するたびにデータがファイルの最後に追加されますが、問題はデータが最後に表示されないことです。明らかに、read()関数が機能していません。

私は何か間違ったことをしていますか?これで私を助けてくれませんか?ありがとう。

4

3 に答える 3

1

を呼び出すとread、ファイル ポインタの現在の位置からファイルの末尾までが読み取られます。ただし、ファイル ポインターは既にファイルの末尾にあるため、何も返されません。

この場合、ファイルを'rw+'モードで開き、最後までシークしてから追加します。

directory = open('docs/directory.csv', 'a+', encoding='utf-8')
directory.seek(0,2) #seek to the end

name = input('Please insert a name: ')
phone = input('Please insert a phone number: ')

directory.write(name + ',' + phone + ',\n')

directory.seek(0) #seek back to beginning
print(directory.read())
于 2013-05-20T02:22:57.020 に答える
0

Python には、そのための標準ライブラリが用意されています。csv

import csv
with open('eggs.csv', 'wb') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])

リソース: 「csv モジュールの使用」

于 2013-05-20T02:23:36.963 に答える