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

2024-09-22 14:26:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我有下面的源代码,我试图在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中,这很简单,我只需要使用带有'-append'参数的dlmwrite。

但是在Python中如何实现呢?


Tags: 文件csvimporttxt列表output源代码open
2条回答

如果使用Python3.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=''可以帮助您避免获得额外的新行,即两行之间带有数据的空行。

以追加模式打开文件。

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+:以二进制格式打开一个文件进行追加和读取。如果文件存在,则文件指针位于文件末尾。文件以追加模式打开。如果文件不存在,它将创建一个新文件以供读取和写入。

相关问题 更多 >