擅长:python、mysql、java
<p>你可以这样做:</p>
<pre><code>import csv
with open('scores.csv', newline='') as f:
reader = csv.reader(f)
row_dict = {int(row[0]): row for row in reader}
while True:
print(row_dict)
raw = input('(id) name score? ')
if raw in 'Qq':
break
new_row = [x.strip() for x in raw.split()]
if len(new_row) == 3:
# id provided, so overwrite existing row
# or create a new one
row_dict[int(new_row[0])] = new_row
else:
# No id provided
new_id = max(row_dict) + 1
new_row.insert(0, new_id)
row_dict[new_id] = new_row
with open('scores.csv', 'w', newline='') as f:
writer = csv.writer(f)
for _, v in sorted(row_dict.items()):
writer.writerow(v)
</code></pre>
<p>其思想是读取文件并从行中创建字典,键入主键或id。文件的新条目将添加到dict中。如果新条目包括主键,则现有行将被覆盖,如果该键不存在,则创建新行。如果未提供主键,则计算新键</p>