使用CSV Django模块以通用换行模式打开文件

moh*_*ohd 86 csv django macos newline python-2.x

我试图访问model.filefieldDjango 中使用该模块解析Python中的CSV文件csv.它在Windows上工作,但在Mac上它给了我这个:

Exception Type: Error

Exception Value: new-line character seen in unquoted field - do you need to open the file in universal-newline mode?
Run Code Online (Sandbox Code Playgroud)

这是代码:

myfile = customerbulk.objects.all()[0].fileup

mydata = csv.reader(myfile)
    for email,mobile,name,civilid in mydata:
        print email,mobile,name,civilid
Run Code Online (Sandbox Code Playgroud)

moh*_*ohd 148

我终于找到了解决方案:

mypath = customerbulk.objects.get(pk=1).fileup.path
o = open(mypath,'rU')
mydata = csv.reader(o)
Run Code Online (Sandbox Code Playgroud)

  • [PEP278](http://www.python.org/dev/peps/pep-0278/)解释了什么`rU`代表:`在具有通用换行符支持open()的Python中,mode参数也可以是"U" ",意思是"打开输入作为具有通用换行符解释的文本文件".模式"rU"也是允许的,对称为"rb".` (13认同)
  • 是的,没有必要在打开后立即寻求开始.>>> o = open(mypath,'rU')位,带有'rU'标志是我案例中的重要魔力. (4认同)
  • 我相信你可以简化这个.在打开文件后寻求开始似乎很奇怪.以下帮助我克服了使用默认值从Excel电子表格导出到CSV的相同问题:data = csv.reader(open(FILENAME,'rU'),quotechar ='"',delimiter =',') (2认同)