使用 Python 的 CSV 模块覆盖 csv 文件中的特定行
我正在使用 Python 的 csv 模块来读取和写入 csv 文件。
我的阅读效果很好,并且附加到 csv 效果很好,但我希望能够覆盖 csv 中的特定行。
作为参考,这是我的阅读内容,然后编写要附加的代码:
#reading
b = open("bottles.csv", "rb")
bottles = csv.reader(b)
bottle_list = []
bottle_list.extend(bottles)
b.close()
#appending
b=open('bottles.csv','a')
writer = csv.writer(b)
writer.writerow([bottle,emptyButtonCount,100, img])
b.close()
并且我使用基本相同的覆盖模式(这是不正确的,它只是覆盖整个 csv 文件):
b=open('bottles.csv','wb')
writer = csv.writer(b)
writer.writerow([bottle,btlnum,100,img])
b.close()
在第二种情况下,我该如何告诉Python 我需要覆盖特定行吗?我搜索了 Gogle 和其他 stackoverflow 帖子,但没有结果。我认为应该归咎于我有限的编程知识而不是谷歌。
I'm using Python's csv module to do some reading and writing of csv files.
I've got the reading fine and appending to the csv fine, but I want to be able to overwrite a specific row in the csv.
For reference, here's my reading and then writing code to append:
#reading
b = open("bottles.csv", "rb")
bottles = csv.reader(b)
bottle_list = []
bottle_list.extend(bottles)
b.close()
#appending
b=open('bottles.csv','a')
writer = csv.writer(b)
writer.writerow([bottle,emptyButtonCount,100, img])
b.close()
And I'm using basically the same for the overwrite mode(which isn't correct, it just overwrites the whole csv file):
b=open('bottles.csv','wb')
writer = csv.writer(b)
writer.writerow([bottle,btlnum,100,img])
b.close()
In the second case, how do I tell Python I need a specific row overwritten? I've scoured Gogle and other stackoverflow posts to no avail. I assume my limited programming knowledge is to blame rather than Google.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我将添加到 史蒂文回答:
I will add to Steven Answer :
您无法覆盖 CSV 文件中的单行。您必须将所需的所有行写入新文件,然后将其重命名回原始文件名。
您的使用模式可能比 CSV 文件更适合数据库。查看 sqlite3 模块以获得轻量级数据库。
You cannot overwrite a single row in the CSV file. You'll have to write all the rows you want to a new file and then rename it back to the original file name.
Your pattern of usage may fit a database better than a CSV file. Look into the sqlite3 module for a lightweight database.