2016-06-06 2 views
1

Я загрузил файл CSV через Django, и я пытаюсь прочитать его первую строку. Файл хранится на сервере вПопытка прочитать первую строку CSV-файла возвращает ['/']

/tmp/csv_file/test.csv 

файл выглядит следующим образом:

column_1,column_2,column_3 
2175,294,Nuristan 
2179,299,Sar-e-Pul 

Я пытаюсь получить заголовки файла, как:

absolute_base_file = '/tmp/csv_file/test.csv' 
csv_reader = csv.reader(absolute_base_file) 
csv_headings = next(csv_reader) 
print csv_headings 

я только получаю это в обмен:

['/'] 

РЕДАКЦИЯ

Права доступа файл CSV являются:

-rw-rw-r-- 

Что должно быть в порядке.

EDITED СНОВА

на основе рекомендаций и помощи @EdChum и @Moses Koledoye

Я проверил, если файл правильно читать с помощью:

print (os.stat(absolute_base_file).st_size) # returns 64 

Тогда я попытался выяснить, будут ли искать (0) и csvfile.read (1) один печатный символ.

print csvfile.seek(0) returns None 
    print csvfile.read(1) returns 'c' 

Тогда я думал, что, возможно, существует определенная проблема с следующей функции(), и я попробовал альтернативу:

csv_reader = csv.reader(csvfile) 
for row in csv_reader: 
    print ("csv_reader") 

Опять же это не сработало.

+0

Вы можете разместить ссылку на файл CSV для меня скачать и попробовать – EdChum

+1

, который загружает отлично для меня: '[«имя»«идентификатор»,«дата»] первый ряд: [«0», 'name', '2009-01-01'] 'Я не уверен, что еще предложить здесь – EdChum

ответ

3

Вы прошли строку вместо файлового объекта, который является, почему вы получаете слэш, изменение к этому:

with open (absolute_base_file) as csvfile: 
    csv_reader = csv.reader(csvfile) 

Проверьте docs

Смотрите эту работу:

In [5]: 
import csv 
with open (r'c:\data\csv_test.csv') as csvfile: 
    csv_reader = csv.reader(csvfile) 
    csv_headings = next(csv_reader) 
    print (csv_headings) 

['column_1', 'column_2', 'column_3'] 

Для последовательного доступа к каждому вызову строки next:

In [7]: 
import csv 
with open (r'c:\data\csv_test.csv') as csvfile: 
    csv_reader = csv.reader(csvfile) 
    csv_headings = next(csv_reader) 
    print (csv_headings) 
    first_row = next(csv_reader) 
    print('first row: ', first_row) 


['column_1', 'column_2', 'column_3'] 
first row: ['2175', '294', 'Nuristan'] 
+0

Спасибо. В этом есть смысл. Но как я могу получить доступ к первой строке CSV? – user1919

+0

снова вызвать 'next' для произвольной строки см. Связанный: http: // stackoverflow.com/questions/30964244/read-specific-line-in-csv-file-python – EdChum

+0

Хмм. Я все еще не могу заставить его работать. Все работает до: csv_reader = csv.reader (csvfile) Но когда я пытаюсь получить доступ к csv_reader как: next (csv_reader), я ничего не получаю. – user1919

1

Вы должны передать файл-объект в свой csv.reader не строковый литерал.

absolute_base_file = open(r'/tmp/csv_file/test.csv') # notice open 
csv_reader = csv.reader(absolute_base_file) 
csv_headings = next(csv_reader) 
print csv_headings 
+0

Первый часть его, работает, но когда вы пытаетесь получить заголовки (csv_headings), я получаю сообщение об ошибке. – user1919

+0

Опишите вашу ошибку –

+0

Я думаю, что она не должна распознавать функцию next(). Я использую python 2.7. Дело в том, что весь код находится в попытке ... кроме того, что он просто не выполняет его. – user1919

Смежные вопросы