擅长:python、mysql、java
<p>使用<code>csv</code>模块,您可以遍历行并以dict的形式访问每个行。正如<a href="https://stackoverflow.com/a/16020923/6085135">here</a>所述,更新文件的首选方法是使用临时文件。</p>
<pre><code>from tempfile import NamedTemporaryFile
import shutil
import csv
filename = 'my.csv'
tempfile = NamedTemporaryFile(mode='w', delete=False)
fields = ['ID', 'Name', 'Course', 'Year']
with open(filename, 'r') as csvfile, tempfile:
reader = csv.DictReader(csvfile, fieldnames=fields)
writer = csv.DictWriter(tempfile, fieldnames=fields)
for row in reader:
if row['ID'] == str(stud_ID):
print('updating row', row['ID'])
row['Name'], row['Course'], row['Year'] = stud_name, stud_course, stud_year
row = {'ID': row['ID'], 'Name': row['Name'], 'Course': row['Course'], 'Year': row['Year']}
writer.writerow(row)
shutil.move(tempfile.name, filename)
</code></pre>
<p>如果仍然不起作用,您可以尝试以下编码之一:</p>
<pre><code>with open(filename, 'r', encoding='utf8') as csvfile, tempfile:
with open(filename, 'r', encoding='ascii') as csvfile, tempfile:
</code></pre>
<p>编辑:添加str、打印和编码</p>