在python csv文件中写一个列表,每个列表一个新行

时间:2015-02-02 11:51:15

标签: python list csv

我有以下源代码,我正在尝试在csv文件中编写列表。我需要将每个新列表写入此csv文件的新行中。源代码如下:

import csv
list1=[55,100,'dir1/dir2/dir3/file.txt',0.8]

resultFile = open("output.csv",'wa')
wr = csv.writer(resultFile, dialect='excel')
wr.writerow(list1)
resultFile.close()

问题是每次运行代码时它都不会在换行符中插入list1。

在matlab中很简单,我只需要将dlmwrite与'-append'参数一起使用。

但是如何在Python中执行此操作?

2 个答案:

答案 0 :(得分:25)

以追加模式打开文件。

import csv
list1=[58,100,'dir1/dir2/dir3/file.txt',0.8]

with open("output.csv", "a") as fp:
    wr = csv.writer(fp, dialect='excel')
    wr.writerow(list1)

更多信息open modes

尝试以下方法: -

>>> with open('test1','wb') as f: f.write('test')
... 
>>> with open('test1','ab') as f: f.write('koko')
... 
>>> with open('test1','rb') as f: f.read()
... 
'testkoko'
>>> with open('test1','wa') as f: f.write('coco')
... 
>>> with open('test1','rb') as f: f.read()
... 
'coco'
>>> 

从此link

模式:说明

  1. r :打开文件以供阅读。文件指针位于文件的开头。这是默认模式。
  2. rb :打开一个文件,仅以二进制格式读取。文件指针位于文件的开头。这是默认模式。
  3. r + :打开文件进行读写。文件指针将位于文件的开头。
  4. rb + :打开二进制格式的读写文件。文件指针将位于文件的开头。
  5. w :打开文件仅供写入。如果文件存在,则覆盖文件。如果该文件不存在,则创建一个用于写入的新文件。
  6. wb :打开文件,仅以二进制格式写入。如果文件存在,则覆盖文件。如果该文件不存在,则创建一个用于写入的新文件。
  7. w + :打开文件进行书写和阅读。如果文件存在,则覆盖现有文件。如果该文件不存在,则创建一个用于读写的新文件。
  8. wb + :打开文件,以二进制格式写入和读取。如果文件存在,则覆盖现有文件。如果该文件不存在,则创建一个用于读写的新文件。
  9. a :打开要追加的文件。如果文件存在,则文件指针位于文件的末尾。也就是说,文件处于追加模式。如果该文件不存在,则会创建一个用于写入的新文件。
  10. ab :打开文件,以二进制格式附加。如果文件存在,则文件指针位于文件的末尾。也就是说,文件处于追加模式。如果该文件不存在,则会创建一个用于写入的新文件。
  11. a + :打开文件以进行追加和阅读。如果文件存在,则文件指针位于文件的末尾。该文件以追加模式打开。如果该文件不存在,则会创建一个用于读写的新文件。
  12. ab + :打开文件,以二进制格式追加和读取。如果文件存在,则文件指针位于文件的末尾。该文件以追加模式打开。如果该文件不存在,则会创建一个用于读写的新文件。

答案 1 :(得分:1)

如果您使用Python 3.x,请更改您的代码:

import csv

list1 = [58,100,'dir1/dir2/dir3/file.txt',0.8]

with open("output.csv", "a", newline='') as fp:
    wr = csv.writer(fp, dialect='excel')
    wr.writerow(list1)

添加newline=''可以帮助您避免获取额外的新行,两行之间的数据为空行。