CSV阅读器在Ubuntu和Windows上的不同输出 - Python

时间:2016-04-08 08:13:29

标签: python linux windows python-2.7 csv

我有一个名为Some.csv的文件,它有一个字段(列),其值为

  

1000,2000,.... 39000。

我只想要39000的文件,所以我编写了以下python脚本

import os
import csv

with open('Somenew.csv', 'w') as fw:
  writr = csv.writer(fw, delimiter=',')
  with open('Some.csv','r') as fr:
    reader = csv.reader(fr, delimiter = ',')
    for row in reader:
      if row[2] == '39000':  writr.writerow(row)

现在,当它在Windows上执行时,Somenew.csv看起来像这样

  

xxxx,xxxx,39000,xxxx,xxxx

     yyyy,yyyy,39000,yyyy,yyyy

但是在Linux(Ubuntu 14.04LTS)上执行时,没有添加额外的换行符。

这有什么理由吗?这可能是因为编译器?

2 个答案:

答案 0 :(得分:1)

如果您使用的是Python 2.x,则必须对wb文件使用csv模式:

https://docs.python.org/2/library/csv.html#csv.writer

  

如果csvfile是一个文件对象,那么它必须在平台上以“b”标志打开,这会产生影响。

答案 1 :(得分:0)

尝试以二进制模式打开文件。 This回答可能有所帮助。