我正在学习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文件的每一行中重复?
答案 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)