使用Python读取、添加和保存CSV文件。
我在写一些Python脚本的时候遇到了一些问题。这个脚本的主要目的是读取一个包含四列“朋友”信息的csv文件,分别是他们的名字、地址、电话号码和生日。现在,我已经写了一些代码,但遇到了一些麻烦。
- 我有一个叫load_friends的函数代码,但它似乎只是用来打开csv文件,而不是在每次调用这个函数的时候都打开csv。
- 我真的很难找到合适的教程来写代码,让我可以在调用add_friend(名字、地址、电话号码、生日)这个函数后,自动把新的一行添加到csv文件里。
如果有人能帮我解决这些问题,我会非常感激!
我的代码:
def load_friends():
"""Loads the friends.csv file from disk
"""
reader = csv.reader(open("friends.csv", "rb"))
for row in reader:
print row
def save_friends():
print row
def add_friend():
"""Writes a new entry to friends.csv via Python commands
"""
aCSVReader = csv.reader(open('friends.csv', 'rb'), delimiter=' ', quotechar='|')
for row in aCSVReader:
print ', '.join(row)
3 个回答
0
load_friends这个函数是打开一个csv文件,然后把里面的内容读取出来并显示在屏幕上。
add_friend这个函数也是做同样的事情,但我不太明白你想要实现什么。
一个更有用的版本可能是:
def load_friends ():
with open('friends.csv', 'rb') as f:
for name, phone, address, birthday in csv.reader(f, delimiter=' ', quotechar='|'):
# do something with name, phone, etc.
def add_friend (name, phone, address, birthday):
with open('friends.csv', 'ab') as f:
newrow = [name, phone, address, birthday]
csv.writer(f, deliminter=' ', quotechar='|').writerow(newrow)
add_friend这个函数是把一行新数据加到'friends.csv'文件的最后面(以'a'模式打开文件)。
0
这里有一些小建议:
在下面这个函数里,你需要调整一下缩进……在Python中,缩进是很重要的。不知道这是不是因为复制粘贴造成的,但这很容易修复。
def load_friends():
"""Loads the friends.csv file from disk
"""
reader = csv.reader(open("friends.csv", "rb"))
for row in reader:
print row
在add_friend()
这个函数里,你是以读取的方式打开文件……你可能想用'ab'(追加二进制)的模式来打开它。如果你用写入模式('w')打开,原来的内容会被清空。除非你打算把所有朋友的信息都保存在内存里,并且每次都写出来,否则这样做不会达到你想要的效果。
另外,为什么你把分隔符改成了' '(空格)呢?如果这是标准的CSV格式,这可能也不是你想要的。
1
CSV格式假设每一行之间用换行符分隔,所以下面的代码应该能满足你的需求。
writer = csv.writer(open('friends.csv', 'ab'))
.....
def add_friend(name, address, ph_number, birthday):
"""write a row to the friends.csv file
"""
writer.writerow([name, address, ph_number, birthday])