如何在 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
的身份打开文件,这意味着只读并将列表内容分配给reader
和list(csv.reader(f))
。您之前的代码 a
打开文件以仅在文档中描述为的位置追加:
'a' 打开文件进行追加;写入文件的任何数据都是 自动添加到末尾
并且不支持read()
。
如果您想从不同的列表将数据附加到 csv 文件,请使用 with open as a
和 writer
方法。
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 文件中写入和附加数据并将其存储在列表中的主要内容,如果未能解决你的问题,请参考以下文章
在python中调用mysql存储过程并将结果写入csv文件