如何在 csv 文件中写入和附加数据并将其存储在列表中

Posted

技术标签:

【中文标题】如何在 csv 文件中写入和附加数据并将其存储在列表中【英文标题】:How write and append data in csv file and store it in list 【发布时间】:2019-03-29 14:25:53 【问题描述】:

我在我的 python 代码中创建了 csv 文件,并将在 ti 中附加下一个数据,但错误即将到来

io.UnsupportedOperation: not readable 

我试过的代码是:

df.to_csv('timepass.csv', index=False)
with open(r'timepass.csv', 'a') as f:
       writer = csv.reader(f)
       your_list = list(writer)
       print(your_list)

想要追加下一个数据并存储在同一个 csv 文件中。这样 csv 文件同时具有以前和当前的数据。 所以请帮我找出.. 在此先感谢...

【问题讨论】:

嗨,欢迎来到 SO!如果某人的回答解决了您的问题,您可能希望使用大复选框将其作为答案接受,因为它也有助于并激励社区。​​span> 错误来了先生......AttributeError:模块'csv'没有属性'readlines 我为csv 模块编辑了答案。 【参考方案1】:

就是这么简单,试试这个:

import pandas as pd

df = pd.read_excel("NSTT.xlsx","Sheet1")  #reading Excel 

print(df)    #Printing data frame 

df.to_excel("new.xlsx")    #Writing Dataframe into New Excel file 

现在如果你想在同一个文件中追加数据然后使用

df.to_excel("new.xlsx","a")

并且无需添加列表,因为您可以直接访问与带有数据框的列表相同的数据,只需定义位置。

【讨论】:

需要csv文件不是excel【参考方案2】:

请查看this。

可以在python中使用pandas来读取csv和写入csv:

import pandas as pd 

df = pd.read_csv("csv file")

print(df)

【讨论】:

顺便说一句,覆盖csv中的数据【参考方案3】:

试试:

with open(r'timepass.csv', 'r') as f:
    reader = list(csv.reader(f))

print(reader)

在这里,您以r 的身份打开文件,这意味着只读并将列表内容分配给readerlist(csv.reader(f))。您之前的代码 a 打开文件以仅在文档中描述为的位置追加:

'a' 打开文件进行追加;写入文件的任何数据都是 自动添加到末尾

并且不支持read()

如果您想从不同的列表将数据附加到 csv 文件,请使用 with open as awriter 方法。

with open('lake.csv','a') as f:
    csv.writer(f,[1,2,3]) #dummy list [1,2,3]

或直接从新数据帧中的pandas.DataFrame.to_csv 方法使用header = False,以免附加标头:

df.to_csv('timepass.csv', index=False)
df_new.to_csv(r'timepass.csv', mode='a', header=False) #once you have updated your dataframe, you can directly append it to the same csv file

【讨论】:

顺便说一句。错误是:AttributeError:模块“csv”没有属性“readlines”。也想以列表格式存储数据。正如我在问题中提到的那样。 道歉readlines() 不适用于csv 模块。你可以使用reader with open('lake.csv','a') as l: reader = csv.writer(l,[1,2,3]) #dummy list [1,2,3]输出是: <_csv.writer object at> csv.writer 是用于写入的对象。请参阅编辑后的回复。您正在编写的列表是虚拟列表。如果您正在写作,那么如果您已经知道自己在写什么,这很有意义,在示例中,它就是虚拟列表。 df.to_csv('timepass.csv', index=False) df_new.to_csv(r'timepass.csv', mode='a', header=False) ,这样你写文件两次不追加【参考方案4】:

您可以使用 pandas 快速附加两个 csv

import pandas as pd
dataframe1=pd.read_csv("a.csv")
dataframe2=pd.read_csv("b.csv")
dataframe1=dataframe1.append(dataframe2)
dataframe1=dataframe1.reset_index(drop=True)
dataframe1.to_csv("a.csv")

【讨论】:

@royal 如果你用 dataframe1.to_csv("a,csv") 替换路径,那么如果你有任何其他 csv 文件要添加,a.csv 将成为包含所有数据的主 csv 文件,只需更改 b。使用新文件名的 csv

以上是关于如何在 csv 文件中写入和附加数据并将其存储在列表中的主要内容,如果未能解决你的问题,请参考以下文章

如何从 csv 文件中读取数据并将其存储在数据库中?弹簧靴

如何从 CSV 文件导入数据并将其存储在变量中?

在python中调用mysql存储过程并将结果写入csv文件

Pyspark 写入数据帧并将其保存到 csv 文件中会出现错误

写入csv文件python的第二列

从提取的 JSON 数据中追加和/或写入 CSV