写入CSV并保存文件

时间:2017-03-02 20:52:16

标签: python csv

我有两个Python程序。一个人将客户的信息写入CSV。另一个访问它。当第一个写入它时,我可以打开CSV文件(在Excel中)并看到它已被正确写入。但是,对于其他程序访问CSV文件中的新数据,我必须手动打开并保存(在Excel中),否则它不起作用。有谁知道为什么会这样?

编辑:

这写入(来自第一个程序):

f = open('details.csv', 'at', newline=''); csv_f = csv.reader(f)
csv_w.writerow(clientList)
f.close()

这就是它(第二个程序):

f = open('details.csv', 'rt', newline=''); csv_f = csv.reader(f)
for row in csv_f:
    name.append(row[0])

尝试将row [0]附加到列表时出现此错误。

Traceback (most recent call last):
  File "C:\Users\Dan\Desktop\Garden Centre\work.py", line 8, in <module>
    name.append(row[0])
IndexError: list index out of range

2 个答案:

答案 0 :(得分:0)

我已经看到很多这样的问题源于不同的平台线结尾。在Python 2下,您可以尝试“通用行结束”文件读取模式:

with open('data.csv', 'rU') as f:
    for row in csv.reader(f):
        print row

因为Excel经常使用旧的Mac(\r)和Windows(\r\n)标准,这些标准可以采用csv模块的方式,特别是。在Unix或Mac平台上,Python期望Unix标准行结束(\n)。 Python 3通常更加智能(以及其他文件/字符串编码问题),因此通常不需要特殊模式。

答案 1 :(得分:0)

经过几个小时的努力,我找到了答案。在Excel中,“空白”中的每个项目都是空的。行包含&#39;&#39;对于任何行中最大数量的项目。 Python不会像这样写入CSV,而只是空行中的一个项目包含None。当它遍历每一行时,没有第一项添加到空行的列表中。 我不得不手动添加额外的&#39;&#39;到第一个程序写的列表。