Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Csv读线问题_Python_Csv_Readlines - Fatal编程技术网

Python Csv读线问题

Python Csv读线问题,python,csv,readlines,Python,Csv,Readlines,我正在尝试读取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文件的行。 使用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文件,并执行任何所需的处理,例如转换为整数或浮点。虽然可以将所有行作为行列表读取,但每行都包含一个值列表:

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)
由于您仍在使用Python2.x,因此需要使用rb打开文件,这是csv.reader对象所必需的。这种方法在Windows或Linux上应该会得到相同的结果

行将类似于:

[["header1", "header2", "header3"], ["value1", "value2", "value3"]]
这假设您的CSV文件是标准的逗号分隔变量格式。如果您的CSV文件包含一个标题,而您不希望该标题包含在行中,则只需添加以下内容:

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上运行相同的代码,而不做任何更改,那么您的代码将必须测试您正在运行的版本,并根据版本的不同以不同的方式打开文件。

可能会重复您遇到的问题是什么?您还可以共享打开和读取行的代码吗?我正在尝试如下读取文件:-始终按照csv文档中的指示打开文件“rb”。阅读文档。编辑您的问题,而不是将代码放在注释中。使用类似于:with openfilename,r as file_my:csv_my=file_my.read.splitlines也是一个很好的替代解决方案?因为在python 2.7中,读取二进制文件给了我一个问题,因为迭代器应该返回字符串而不是字节。当我试图将csv_my转换为列表时,这不是真的否。您仍然需要处理每一行以分隔符分割它,如果需要,还需要处理任何引用的字符串字符串正确。这些都是使用CSV库为您处理的。该库希望以二进制模式打开它。如果您编辑您的问题以显示CSV文件中的一些示例行,这会有所帮助。如果您的CSV文件是utf-8编码的,您将需要不同的方法。Python3.x可以更好地处理这些问题,---------上面的代码为我获取csv文件的标题,它看起来像:财政年度|总计Mealsin lacs |每日膳食数量---------------2018 | 568 | 55--------------------等等