用Python编写CSV

时间:2015-08-21 07:17:41

标签: python python-2.7 python-3.x

以下示例是我的结果,行数约为100万。

1 MSH12278732 HSH07392960 956
2 MSH12278732 WSH88257552 940
3 MSH12278732 CSH71109822 923
4 MSH12278732 FSH16284786 920
5 MSH12278732 sucharu_85 917
6 MSH12278732 TSH39376759 911
7 MSH12278732 MSH44112791 908
8 ----   ----- ---

依旧......

我的节目是:

with open ("result3.csv",'wb') as outcsv:
   writer=csv.writer(outcsv)
   wr=csv.writer(outcsv,dialect='excel') 

结果是

wr.writerow(z)
TypeError: 'str' does not support the buffer interface

3 个答案:

答案 0 :(得分:1)

如果您的源数据位于文本文件中,则以下内容应根据需要运行:

import csv, StringIO

data = """1 MSH12278732 HSH07392960 956
2 MSH12278732 WSH88257552 940
3 MSH12278732 CSH71109822 923
4 MSH12278732 FSH16284786 920
5 MSH12278732 sucharu_85 917
6 MSH12278732 TSH39376759 911
7 MSH12278732 MSH44112791 908"""

with open ("result3.csv",'wb') as f_output:
    csv_reader = csv.reader(StringIO.StringIO(data), delimiter=' ')
    csv_writer = csv.writer(f_output, dialect='excel') 
    csv_writer.writerows(csv_reader)        

如果您已经将数据作为一个大块,如上所示,您可以按如下方式进行调整:

1,MSH12278732,HSH07392960,956
2,MSH12278732,WSH88257552,940
3,MSH12278732,CSH71109822,923
4,MSH12278732,FSH16284786,920
5,MSH12278732,sucharu_85,917
6,MSH12278732,TSH39376759,911
7,MSH12278732,MSH44112791,908

这两个都会提供以下输出,可以加载到Excel中:

TypeError: 'str' does not support the buffer interface

注意,如果您使用的是Python 3,则会收到错误open。您需要更改with open("result3.csv",'w', newline='') as f_output: .... 语句,如下所示:

using (IAmazonS3 s3Client = new AmazonS3Client(accessKey, secretKey))
{
    S3DirectoryInfo s3DirectoryInfo = new Amazon.S3.IO.S3DirectoryInfo(s3Client, "testbucket");
    if (s3DirectoryInfo.GetFiles("test*").Any())
    {
        //file exists -- do something
    }
    else
    {
        //file doesn't exist -- do something else
    }
}

答案 1 :(得分:0)

你没有提供足够的细节来帮助我们帮你调试你的东西,但至少我可以告诉你:

writer=csv.writer(outcsv)
wr=csv.writer(outcsv,dialect='excel') 

这可能会失败。你在同一个文件上使用了两个csv编写器,我不确定csv.writer()是否设计用于应对这种情况

答案 2 :(得分:0)

从错误消息 -

  

TypeError:'str'不支持缓冲区接口

我认为这个问题是因为行 -

with open ("result3.csv",'wb') as outcsv:

您应该以{{1​​}}模式打开文件,而不是二进制模式(w)。示例 -

'wb'

我可以使用 -

重现类似的错误
with open ("result3.csv",'w') as outcsv: