我有一个类用于从类似表格的文件(比如csv文件,其中数据存储在行中,列之间用逗号分隔)获取信息。当我运行它时,行方法可以工作,但是列方法不行。在调试时,for循环被传递,但是当我在方法之外测试代码时,它们就工作了。有没有想过为什么会这样
这里有部分代码(实际上,它应该返回列数,而不是返回0):
class DataSheet:
def __init__(self, address):
self.dataSheetFile = open(address, 'r')
self.numberOfRows = self.getNumberOfRowsInFile()
self.numberOfColumns = self.getNumberOfColumnsInFile()
def getNumberOfRowsInFile(self):
numberOfRows = 0
for row in self.dataSheetFile:
numberOfRows += 1
return numberOfRows
def getNumberOfColumnsInFile(self):
numberOfColumns = 0
for row in self.dataSheetFile:
numberOfColumns = row.count(',') + 1
break
return numberOfColumns
def getIndexRow(self, index):
numberOfRows = 1
for row in self.dataSheetFile:
if numberOfRows == index:
return row
numberOfRows += 1
def getIndexColumn(self, index):
column = ''
newLine = '\n'
for row in self.dataSheetFile:
column += row.split(',')[index-1] + newLine
return column
dataSheet = DataSheet('address/DataSheet.txt')
print(dataSheet.numberOfColumns) # => 0
你在重复你打开两次的文件。但是这样做会改变你打开的文件句柄。它有一个秘密的内部“位置”,它当前正在读取文件,在读取整个迭代器之后,您已经到达了末尾
您可以在读取后执行
f.seek(0)
来重置位置相关问题 更多 >
编程相关推荐