CSV readlines проблема - PullRequest
       14

CSV readlines проблема

0 голосов
/ 27 апреля 2019

Я пытаюсь читать строки файла CSV. Код для чтения файла в python с readlines и csv.reader отлично работает на windows, но на тестовом сервере Linux у меня возникают некоторые проблемы, возможно, из-за \n в конце каждой строки.

Есть ли какая-то разница в чтении строк через функцию readlines в python для windows и linux?

Это мой код:

with open(r"C:\Users\prate\Downloads\meal_count_avg_meal.csv","r") as filemy:
    #mycontent=csv.reader(filemy)
    out = filemy.readlines()

1 Ответ

0 голосов
/ 28 апреля 2019

Обычно вы будете читать файл CSV подряд и выполнять любую необходимую обработку (например, преобразование в ints или floats). Тем не менее, можно прочитать все строки как список строк, каждая строка содержит список значений:

import csv

filename = r"C:\Users\prate\Downloads\meal_count_avg_meal.csv"

with open(filename, "rb") as file_my:
    csv_my = csv.reader(file_my)
    # next(csv_my)     # Optionally skip the header
    rows = list(csv_my)

Поскольку вы все еще используете Python 2.x, вам необходимо открыть файл с помощью rb, что требуется для объекта csv.reader(). Этот подход должен дать вам тот же результат в Windows или Linux.

rows будет что-то вроде:

[["header1", "header2", "header3"], ["value1", "value2", "value3"]]

Предполагается, что ваш CSV-файл представляет собой стандартный формат переменной, разделенной запятыми. Если ваш CSV-файл содержит заголовок и вы не хотите включать его в rows, просто добавьте следующее:

next(csv_my)

Использование .readlines() сохранит окончания строк (которые различаются в Windows и Linux).


Если одна из ваших сред - это Python 3.x, ее необходимо изменить следующим образом:

import csv

filename = r"C:\Users\prate\Downloads\meal_count_avg_meal.csv"

with open(filename, "r", newline="") as file_my:
    csv_my = csv.reader(file_my)
    # next(csv_my)     # Optionally skip the header
    rows = list(csv_my)

Если вы планируете запускать один и тот же код на 2.x и 3.x без изменений, ваш код должен будет проверить, на какой версии вы работаете, и открыть файл по-разному в зависимости от версии.

...