我有一个类来从类似表的文件中获取信息(比如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
答案 0 :(得分:1)
您正在重复打开两次打开的文件。但这样做是更改您打开的文件句柄。它有一个秘密的内部位置'它当前正在读取文件,在阅读完整个迭代器之后,你已经到了最后。
您可以在阅读后f.seek(0)
重置该位置。