Python在While循环中读取文件

我目前在关于python和读取文件方面有些困惑。我必须在while循环中打开文件,并使用文件的值做一些事情。结果被写入一个新文件。然后在while循环的下一次运行中读取此新文件。但是在第二次运行中,我没有从该文件中获取任何值...这是一个代码段,希望可以阐明我的意思。


while convergence == 0:

    run += 1

    prevrun = run-1


    if os.path.isfile("./Output/temp/EmissionMat%d.txt" %prevrun) == True:

        matfile = open("./Output/temp/EmissionMat%d.txt" %prevrun, "r") 

        EmissionMat = Aux_Functions.EmissionMat(matfile)

        matfile.close()

    else:

        matfile = open("./Input/EmissionMat.txt", "r") 

        EmissionMat = Aux_Functions.EmissionMat(matfile)

        matfile.close()


    # now some valid operations, which produce a matrix


    emissionmat_file = open("./output/temp/EmissionMat%d.txt" %run, "w")

    emissionmat_file.flush()

    emissionmat_file.write(str(matrix))


    emissionmat_file.close()

解决了!


matfile.seek(0)

这会将指针重置为文件的开头,并允许我在下次运行时正确读取文件。


慕雪6442864
浏览 450回答 3
3回答

白猪掌柜的

为什么要先写入文件然后读取?此外,您使用冲洗,所以您可能会做长时间的io。我会做with open(originalpath) as f:    mat = f.read()while condition :    run += 1    write_mat_run(mat, run)    mat = func(mat)write_mat_run可以在另一个线程中完成。您应该检查io异常。顺便说一句,这可能会解决您的错误,或者至少要弄清楚。

白板的微信

我看不到您的代码有什么问题。以下具体示例在我的Linux机器上工作:import osrun = 0while run < 10:&nbsp; &nbsp; run += 1&nbsp; &nbsp; prevrun = run-1&nbsp; &nbsp; if os.path.isfile("output%d.txt" %prevrun):&nbsp; &nbsp; &nbsp; &nbsp; matfile = open("output%d.txt" %prevrun, "r")&nbsp; &nbsp; &nbsp; &nbsp; data = matfile.readlines()&nbsp; &nbsp; &nbsp; &nbsp; matfile.close()&nbsp; &nbsp; else:&nbsp; &nbsp; &nbsp; &nbsp; matfile = open("input.txt", "r")&nbsp; &nbsp; &nbsp; &nbsp; data = matfile.readlines()&nbsp; &nbsp; &nbsp; &nbsp; matfile.close()&nbsp; &nbsp; data = [ s[:-1] + "!\n" for s in data ]&nbsp; &nbsp; emissionmat_file = open("output%d.txt" %run, "w")&nbsp; &nbsp; emissionmat_file.writelines(data)&nbsp; &nbsp; emissionmat_file.close()它将感叹号添加到文件中的每一行input.txt。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python