簡體   English   中英

Csv readlines 問題

[英]Csv readlines issue

我正在嘗試讀取 csv 文件文件的行。 使用 readlines 和 csv.reader 在 python 中讀取文件的代碼在 Windows 上運行良好,但在 Linux 測試服務器上,我遇到了一些問題,可能是因為每行末尾的\\n

在 windows 和 linux 上通過 python 中的 readlines 函數讀取行有什么區別嗎?

這是我的代碼:

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

通常,您會一次連續讀取 CSV 文件,並執行任何所需的處理(例如轉換為intsfloats )。 雖然可以將所有行作為行列表讀取,每一行都包含一個值列表:

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 上運行相同的代碼而保持不變,您的代碼必須測試您正在運行的版本並根據版本以不同的方式打開文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM