使用Python读取,添加和保存CSV文件。

时间:2011-08-30 12:03:34

标签: python csv

我遇到了一些我一直在做的python脚本问题。整个脚本的想法是阅读包含4个'朋友'颜色的csv文档。是他们的名字,地址,电话号码和生日。现在,我已经写了一些代码,但有一些问题。

  1. 我有load_friends定义的代码,但是看起来只是打开csv的代码,而不是在加载函数时打开csv。
  2. 我真的很难找到合适的教程来编写代码,在函数之后添加新行到csv文件,add_friend(姓名,地址,电话号码,生日),输入,然后将它添加到CSV。
  3. 如果有人可以提供任何帮助,那将非常感激!

    我的代码:

    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 :(得分: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])

答案 1 :(得分: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')打开它,现有内容将被清除。除非你要将所有朋友的副本留在记忆中并且每次都把它们全部写出来,否则这不会达到预期的效果。

另外,为什么要将分隔符char更改为''?如果它是标准的CSV,这可能不是您想要的。

答案 2 :(得分:0)

load_friends打开csv,加载并将其内容转储到stdout。

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'模式打开)。