我正在尝试将算法(分数)的某些结果打印到.txt文件中,以获取该数据以进行进一步分析。在这里,算法将创建文件,然后将其打开以将数字记下来。然后我考虑再次关闭它。 我的问题是,我什至找不到文件。如果我自己创建一个,而只尝试写数字,那也行不通。
这是针对机器人的强化学习的分析。分数象征着Q值,对于进一步分析很重要。分数是一个随机数。
if __name__ == '__main__':
open('try.txt', 'w+').close()
for e in range(agent.load_episode + 1, EPISODES):
...
for t in range(agent.episode_step):
...
if done:
...
saveFile = open('try.txt','w')
saveFile.write(str(score))
saveFile.close()
从第一部分开始,我尝试创建一个名为try.txt的新文件(我只创建一次该文件)。之后,我打开文件,写一些东西然后再次关闭。计算下一个Q值时,将再次打开文件。
答案 0 :(得分:0)
尝试将saveFile = open('try.txt', 'w')
更改为with open('try.txt', 'a+') as saveFile:
答案 1 :(得分:0)
文件应该只包含最后一个计算值,还是一次运行的所有值(可能是新行中的每个值),甚至是单独运行的值?不过,您可能正在寻找经过一些修改,删节的内容:
if __name__ == '__main__':
with open('try.txt', 'w') as saveFile: # change to 'a' if you want the results to be stored between runs
for e in range(agent.load_episode + 1, EPISODES):
...
for t in range(agent.episode_step):
...
if done:
...
# saveFile.truncate() uncommenting this means that the file only stores the latest value
saveFile.write(str(score) + '\n') # write each result to new line
saveFile.flush() # this line makes the results accessible from file as soon as they are calculated
在python中, with 是打开文件的首选方法,因为它会在适当的时候关闭文件。当以“ w”模式打开文件时,文件内的插入符号位于文件的开头,如果文件中包含任何数据,则将其删除。
“ a”模式追加到文件。您可能想看看this。
现在,我相信您想不停地打开和关闭文件,以便在迭代完成后立即访问数据。那就是saveFile.flush()的目的。请让我知道这是否对您有帮助!
要更好地控制文件的创建位置,请使用os模块:
import os
directory = os.path.dirname(os.path.abspath(__file__))
file_path = os.path.join(directory, 'try.txt')
# print(file_path)
with open(file_path, 'w') as saveFile: