Python 3.x 有没有办法通过操作系统模块直接编辑某一文本文件行?(Python 3.7)

Python 3.x 有没有办法通过操作系统模块直接编辑某一文本文件行?(Python 3.7),python-3.x,function,file,operating-system,Python 3.x,Function,File,Operating System,我想做一个游戏,你的分数保存为一个文本文件。分数点击必须始终位于第二行,并按用户保存。每次用户保存时,我都希望用新的分数替换文本文件的第二行 我尝试过使用堆栈溢出上建议的很多东西,比如os.replace或os.resub,但都不起作用 def保存: 全局用户日志 全球点击 score=opendirectory+/+userlog+.txt,r+ 在这一行中,我需要一些代码来替换上面列出的文本文件中的第二行。 对于rangerandom中的i.randint2,5: 打印保存 时间0.10 打

我想做一个游戏,你的分数保存为一个文本文件。分数点击必须始终位于第二行,并按用户保存。每次用户保存时,我都希望用新的分数替换文本文件的第二行

我尝试过使用堆栈溢出上建议的很多东西,比如os.replace或os.resub,但都不起作用

def保存: 全局用户日志 全球点击 score=opendirectory+/+userlog+.txt,r+ 在这一行中,我需要一些代码来替换上面列出的文本文件中的第二行。 对于rangerandom中的i.randint2,5: 打印保存 时间0.10 打印保存。 时间0.10 打印保存。。 时间0.10 打印保存。。。 时间0.10 打印\n已成功保存名称! 我没有任何工作。只是得到一些标准的错误信息

如有任何帮助,将不胜感激:


谢谢:

我的评论示例-您的保存功能可以执行以下操作

加载以前记录的信息 使用openlogfile,“r”作为fobj: log=fobj.readlines 用一些新信息替换第2行 日志[1]=“一些新信息\n” 覆盖现有日志文件 使用openlogfile,“w”作为fobj: 对于日志中的行: fobj.writeline
原则上,您也可以在r+模式下使用open,正如您在问题中所写的那样。这将要求您使用seek see,例如,获取指向您要写入位置的文件指针-我不建议使用更复杂的选项。

不,据我所知。只是有一个类似的问题。您可以做的是将文本加载到变量中,在保存时编辑变量,然后将变量写回文本文件。我甚至不需要操作系统,但我想稍后在程序中阅读第二行,不能只在保存时添加分数。我需要一些代码,将第二行设置为单击保存后单击。为了澄清:我的意思是,如果调用“保存”操作,则编辑变量。因此,您的保存功能必须包括:加载日志文件、编辑加载的数据、将数据写回日志文件覆盖现有文件或创建新文件。顺便说一下,os.replace重命名文件,请参阅向下滚动一点。我会说有点误会-哦,哇,这可能真的很有用:这正是我需要的!非常感谢你。澄清一下,fobj是什么意思?我还是python的一个婴儿:p你不是我们应得的英雄。你是我们需要的英雄,酋长;-@JJKenna:我使用fobj作为文件对象的缩写形式-这就是open返回的内容,例如。更多关于with语句的信息,例如-这是一种方便的方式,可以为您完成垃圾收集、关闭等操作。感谢您的解释。现在这对我来说很有意义我得到这个错误,我不认为它是太大,可以修复。你能检查一下有什么问题吗?python第19行,在保存日志[1]=单击索引器错误:列表分配索引超出范围我当前的代码是python def保存:全局用户日志全局单击opendirectory+/+userlog+.txt,r为fobj:log=fobj.readlines log[1]=单击opendirectory+/+userlog+.txt,w as fobj:对于log:fobj.writeline@JJKenna中的行,如果您无法访问索引1处的日志,则您的日志文件似乎不包含多行。打印调试日志,如果写入文件,请不要忘记添加新行“\n”-否则,重新加载文件时,.readlines将不知道行的结束位置。