【发布时间】:2018-02-07 10:17:12
【问题描述】:
所以我已经看到这里完成了其他问题,但我仍然有点困惑。过去几天我一直在学习 python3,我想我会开始做一个项目来真正弄脏我的手。我需要遍历一定数量的 CSV 文件并对这些文件进行编辑。通常,我无法转到特定列以及 python 中的循环。我习惯了约定(int i = 0; i
import os
import csv
pathName = os.getcwd()
numFiles = []
fileNames = os.listdir(pathName)
for fileNames in fileNames:
if fileNames.endswith(".csv"):
numFiles.append(fileNames)
for i in numFiles:
file = open(os.path.join(pathName, i), "rU")
reader = csv.reader(file, delimiter=',')
for column in reader:
print(column[4])
我的问题在于这一行:
for column in reader:
print(column[4])
所以在文档中它说 column 是变量,而 reader 是我正在循环的内容。但是当我写 4 我得到这个错误:
IndexError: list index out of range
这是什么意思?如果我写 0 而不是 4,它会打印出每个 CSV 文件的第 0 列单元格 0 中的所有值。我基本上需要它遍历每个 CSV 文件的第一行并找到一个特定的值,然后遍历整个列。提前致谢!
【问题讨论】:
-
这意味着在您的一个文件中的某处,没有任何第 5 列。
-
for column in reader?不是for row in reader吗?并且不要忘记使用with来确保文件在处理后关闭:with open(os.path.join(pathName, i), "rU") as file: -
太棒了,感谢所有的答案! @azalea 为什么是 5?我试图了解 for 循环是如何工作的。
-
造成这种情况的一个常见原因是您的文件中某处有一个空行。例如第一行或最后一行。你可以添加类似
if len(row) == 4: -
不应该是
for aFileName in fileNames:而不是for fileNames in fileNames:
标签: python python-3.x csv