Ошибка Python _csv: строка содержит байт NULL

Это мой код:

filepath = sys.argv[1]

csvdata = list(csv.reader(open(filepath)))

Как я могу это исправить?

Я сохранил свой файл excel как csv и получил эту ошибку:

_csv.Error: new-line character seen in unquoted field - do you need to open the file in universal-newline mode?

person user8233898    schedule 08.08.2017    source источник
comment
Миллиард способов, сначала включите трассировку стека и немного больше информации о вашем коде!   -  person Ubdus Samad    schedule 08.08.2017
comment
это, вероятно, недействительный файл CSV. В лучшем случае вам нужно отфильтровать нулевые байты.   -  person Jean-François Fabre    schedule 08.08.2017
comment
Являются ли нулевые байты пустыми ячейками? Я использую файл excel.   -  person user8233898    schedule 08.08.2017
comment
если вы используете файл Excel, попробуйте сначала экспортировать его/сохранить как файл csv. Рабочий лист Excel не является CSV-файлом.   -  person Basya    schedule 08.08.2017
comment
Хорошо, теперь я получил эту ошибку _csv.Error: символ новой строки виден в поле без кавычек - вам нужно открыть файл в универсальном режиме новой строки?   -  person user8233898    schedule 08.08.2017
comment
Возможно, откройте его как rb, как указано здесь: stackoverflow.com /questions/24662571/python-import-csv-to-list   -  person Basya    schedule 08.08.2017
comment
Какую версию Python вы используете?   -  person Basya    schedule 08.08.2017
comment
Пожалуйста, отредактируйте свой пост, чтобы добавить ошибки, которые вы видите. Кроме того, если ваш CSV-файл представляет собой текстовый файл, покажите, как выглядят его несколько строк.   -  person GreenMatt    schedule 08.08.2017
comment
Дубликат stackoverflow.com/questions /4166070/ ?   -  person Michael Dyck    schedule 25.02.2020


Ответы (3)


  1. Файл Excel не является файлом csv. Сначала экспортируйте/сохраните файл как csv.
  2. Между версиями Python существуют различия в том, открывать ли файл как двоичный или текстовый. Это имеет отношение к тому, как обрабатываются новые строки. В Python 2.x открыть как двоичный файл: open(filepath, 'rb')

    В Python 3.x нельзя: open('file.csv', 'r')

    Вторую часть я узнал из этой ссылки о чтении в файлах csv

  3. Для некоторых операционных систем (Mac OS наверняка) вам нужно открыть в режиме «rU». См.: эта ссылка с такой же проблемой только в Mac OS

person Basya    schedule 08.08.2017
comment
Я все еще получаю эту ошибку: _csv.Error: символ новой строки виден в поле без кавычек - вам нужно открыть файл в универсальном режиме новой строки? - person user8233898; 08.08.2017
comment
Я думаю, вам придется дать нам больше информации. Питон версия. ОПЕРАЦИОННЫЕ СИСТЕМЫ. Пример текста, показывающего проблему (желательно несколько строк, воспроизводящих проблему. Какие из приведенных выше предложений вы пробовали? Изменились ли результаты? - person Basya; 08.08.2017
comment
Я пробовал это здесь (Linux, Python 2.7) с CSV-файлом собственного создания, и у меня не было проблем. Для понимания проблемы нам понадобится больше информации - person Basya; 08.08.2017
comment
Используя Mac OS, я пробовал все решения, данные до сих пор. - person user8233898; 08.08.2017
comment
Да, я думаю, вам нужен универсальный режим новой строки. См.: stackoverflow.com/questions/6726953/ - person Basya; 08.08.2017
comment
Вам это помогло? - person Basya; 09.08.2017
comment
Что такое клиентская масса? Я должен иметь возможность использовать этот скрипт для любого CSV, который он получает - person user8233898; 09.08.2017
comment
Не уверен, что вы имеете в виду под массой клиентов. Если ответы здесь помогли вам, отметьте ответ, который решил ваши проблемы, как принятый (флажок вверху слева от ответа). Вы можете проголосовать за любой пост, который вообще помог, даже более одного, но вы можете принять только один в качестве ответа. - person Basya; 09.08.2017
comment
В примере человек использует customerbulk, это файл? Я знаю, как работает этот веб-сайт, но ни один из ответов пока не решил проблему, поэтому я ничего не принял в качестве ответа. - person user8233898; 09.08.2017
comment
Спасибо, что отметили ответ. Я не знаю, что такое customerbulk, я думаю, какая-то библиотека или модуль, который он использует. Я связался с ним из-за ответа о «rU» и его обсуждения, и там также упоминается MacOS. Что еще не работает? Вы говорите, что я должен иметь возможность использовать этот скрипт для любого CSV-файла, который он получает, и вы говорите, что я должен иметь возможность использовать этот скрипт для любого CSV-файла, который он получает, поэтому я немного запутался... вам все еще нужна помощь с чем-то ? - person Basya; 09.08.2017

попробуйте это (укажите фактическое местоположение файла csv)...

with open('c:\pytest.csv', 'rb') as csvfile:

    data = csv.reader(csvfile)

    mylist = list (data)

    print mylist
person Praful    schedule 08.08.2017
comment
Но мне нужно использовать этот скрипт для кучи CSV-файлов, поэтому я хочу сделать его более универсальным. - person user8233898; 09.08.2017
comment
Это была скорее иллюстрация того, как читать файл CSV. Вы можете взять стандартный ввод любого допустимого файла CSV и применить ту же логику. - person Praful; 09.08.2017
comment
Получение этой ошибки: mylist = список (данные) _csv. Ошибка: символ новой строки виден в поле без кавычек - вам нужно открыть файл в универсальном режиме новой строки? - person user8233898; 09.08.2017
comment
см. ниже код - открывает диалоговое окно для выбора файла для чтения - person Praful; 09.08.2017

person    schedule
comment
Дампы кода без каких-либо объяснений редко бывают полезными. Stack Overflow предназначен для обучения, а не для слепого копирования и вставки фрагментов. Пожалуйста, отредактируйте свой вопрос и объясните, как он отвечает на заданный конкретный вопрос. См. Как ответить. - person Chris; 24.03.2021