有关CSV文件的基本python问题

时间:2019-12-17 06:01:02

标签: python pandas csv

我正在学习python,并且一直想找出为什么该脚本无法运行的问题。

我有一个带头的csv文件,并将其作为参数输入到终端

以下脚本可以正常工作,它使我可以重复浏览csv文件的每一行

for( const prop in datas.data.videoGroup.past) {
    $.each(datas.data.videoGroup.past[prop], function(i, v) {
    var hash5 = v.id;
    var link = hash5;
    var tblRows = "<tr>" + "<td>" + v.title + "</td>" + "<td>" + 2 + '  ₹' + "</td>" + "<td><a target='_blank' href='" + link + "'>" + "WATCH/DOWNLOAD" + "</a></td>" + "</tr>";
    $(tblRows).appendTo("#userdata");
});
}

但是当我尝试将列索引和标题转换为字典时

import sys

input = open(sys.argv[1], 'r')
for line in input:
    print(line)

print(line)不打印任何内容。为什么不让我在csv文件的每一行中重复?

2 个答案:

答案 0 :(得分:1)

在Python中使用open进行创建时,名为input的变量称为文件句柄。该文件对象存储一个光标,用于指示文件中当前指向文件处理程序的位置(此位置从0开始,即文件的开头)。

调用for line in input.readlines()时,Python中实际发生的情况是,每次迭代它会将文件中的光标向前移动一行。最终,该光标到达文件末尾并停留在该位置。这可能与pd.read_csv(input)的工作方式相同,因此,当您到达下一个for line in input.readlines()时,光标已位于文件末尾,不再需要读取任何内容。

如果您想修改文件以使for line in input.readlines()部分起作用,则可以将文件对象告诉input.seek(0),这会将光标移回文件的开头。

答案 1 :(得分:0)

要遍历每一行,您需要使用readlines迭代器

import sys
input = open(sys.argv[1], 'r')  # FYI, input is a python keyword, do not recommend using it
for line in input.readlines():
    print(line)