2017-03-02 74 views
-2

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

编辑:

这样写它(从第一个节目):

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]) 

想,当我得到这个错误将行[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

如果您向我们显示您的代码,可能对您有所帮助。 :) – sangheestyle

回答

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通常比较聪明(和其他文件/字符串编码问题),因此通常不需要特殊模式。

+0

我尝试了你的建议,但我已经在Python 3上,所以我不确定它有什么不同,因为我仍然遇到同样的错误。 –

+0

在Python 3中,IME与U模式不会有很大的区别。你甚至可能会得到一个弃用警告。但那是什么'newline ='''参数?这看起来很可能会妨碍你。 –

0

我在尝试几小时后找到了答案。在Excel中,“空行”中的每个项目在任何行中包含最大数量的项目。 Python不会像CSV那样将其写入CSV,而是只在空行上的一个项目包含None。当它遍历每一行时,没有第一项要添加到空行上的列表。 我不得不手动添加一个额外的''到第一个程序编写的列表中。