def data_mining (text_file, start, end):
count = 0
total_value = 0
average = 0
for file_line_number, line in enumerate(text_file):
if (file_line_number % 2) == 0:
value = line[start:end]
value = int(value)
total_value += value
count += 1
return total_value, count
def main ():
#Main program.
text_file = open("93cars.dat.txt", "r")
city_mpg = data_mining(text_file, 52, 54)
highway_mpg = data_mining(text_file, 55, 57)
midrange_price = data_mining(text_file, 42, 44)
print (city_mpg)
print (highway_mpg)
print (midrange_price)
main()
我正在尝试在文本中进行数据挖掘但是在我调用data_mining函数之后,下次调用它时它将返回0.我试着通过编写text_file2 = text_file [:]来复制text_file但是它返回了一个错误。
答案 0 :(得分:1)
def data_mining (text_file, start, end):
count = 0
total_value = 0
average = 0
for file_line_number, line in enumerate(text_file):
if (file_line_number % 2) == 0:
value = line[start:end]
value = int(value)
total_value += value
count += 1
return total_value, count
def main ():
#Main program.
text_file = open("93cars.dat.txt", "r")
city_mpg = data_mining(text_file, 52, 54)
text_file.seek(0) #reset the file pointer to 0
highway_mpg = data_mining(text_file, 55, 57)
text_file.seek(0) #reset the file pointer to 0
midrange_price = data_mining(text_file, 42, 44)
print (city_mpg)
print (highway_mpg)
print (midrange_price)
main()
基本上你正在读取整个文件,而不是重置指针所在的位置。关闭文件并重新打开会花费更多精力,或者使用参数seek()
调用0
函数。
基本上,read
文件的来源与输入时文本文件中的光标类似。现在按住->
键,直到你到达文件末尾。下次当你尝试阅读某些东西并且没有将光标设置回到开头时,它只会读取end of file
符号并认为它是空的。
seek(0)
告诉文件指针或光标(来自我们的示例)返回到开始。 seek()
采用以字节为单位的参数转到该文件的字节,零作为开始。
答案 1 :(得分:0)
第一次调用data_mining()
时,文件被读取,文件读取指针最终在文件末尾。在text_file.seek(0)
开头调用data_mining
将确保指针始终从文件的开头开始。