为了账号安全,请及时绑定邮箱和手机立即绑定

Python在While循环中读取文件

Python在While循环中读取文件

慕雪6442864 2021-03-20 04:26:28
我目前在关于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)这会将指针重置为文件的开头,并允许我在下次运行时正确读取文件。
查看完整描述

3 回答

?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

为什么要先写入文件然后读取?此外,您使用冲洗,所以您可能会做长时间的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异常。


顺便说一句,这可能会解决您的错误,或者至少要弄清楚。


查看完整回答
反对 回复 2021-03-30
?
白板的微信

TA贡献1883条经验 获得超3个赞

我看不到您的代码有什么问题。以下具体示例在我的Linux机器上工作:


import os


run = 0

while run < 10:

    run += 1

    prevrun = run-1


    if os.path.isfile("output%d.txt" %prevrun):

        matfile = open("output%d.txt" %prevrun, "r")

        data = matfile.readlines()

        matfile.close()

    else:

        matfile = open("input.txt", "r")

        data = matfile.readlines()

        matfile.close()


    data = [ s[:-1] + "!\n" for s in data ]


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

    emissionmat_file.writelines(data)

    emissionmat_file.close()

它将感叹号添加到文件中的每一行input.txt。


查看完整回答
反对 回复 2021-03-30
  • 3 回答
  • 0 关注
  • 449 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信