【问题标题】:How write and append data in csv file and store it in list如何在 csv 文件中写入和附加数据并将其存储在列表中
【发布时间】: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 模块编辑了答案。

标签: python list csv append


【解决方案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
猜你喜欢
  • 2020-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-19
  • 1970-01-01
  • 1970-01-01
  • 2019-05-09
  • 1970-01-01
相关资源
最近更新 更多