我有两个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
答案 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;到第一个程序写的列表。