调用下一个函数后file.txt内容消失

Posted

技术标签:

【中文标题】调用下一个函数后file.txt内容消失【英文标题】:file.txt content disappearing after calling the next function 【发布时间】:2019-05-23 19:11:16 【问题描述】:

我试图让我的程序覆盖一个简单的 config.txt 文件。 这实际上是有效的:如果满足一个条件,它会在旧内容上写入新内容并继续进行下一个块。 但是,当下一个块调用我程序的另一个函数时,文件的内容就消失了:.txt 文件变为空。

我搜索过类似问题,但找不到任何帖子。 我调查了: How to search and replace text in a file using Python? Search and replace a line in a file in Python 并让其中一些工作,但总是遇到上述问题。

请温柔,因为我是新手,这是我的第一个“不是 Hello_world”程序,也是我的第一篇文章。谢谢:)

>>>默认config.txt文件的内容是'runco​​unt=0'

    def alias(confirmation):

        ###First block###
        if confirmation.lower()=='yes':
            print("...")

            config=open('config.txt','r')
            data=config.read()
            config.close()

            newdata=data.replace('runcount=0','runcount=1')

            config=open('config.txt','w')
            config.write(newdata)
            config.close()

            confirmation2=input()

>>>config.txt 文件的内容现在是 'runco​​unt=1'

            ###Second block###
            if confirmation2.lower()=='yes':
                print("...")
                return main()
            else:
                ...

>>>main() 函数被调用...但是 config.txt 文件现在是空的

我选择向您展示这段代码是因为我认为它是最易读的。 我尝试了“with”方法,它给了我相同的结果。 我还尝试写入一个新文件,删除默认文件并将新文件重命名为 config.txt ......同样的问题。 我不明白为什么文件在我关闭时变空。 没有错误消息,我的程序继续运行,但文件为空。 请注意,我在我的程序的另一个函数中使用了 open(config.txt, 'r'),目前只使用过一次。

【问题讨论】:

在我看来并没有什么问题。似乎main() 一定在做一些破坏config.txt 内容的事情。如果您将调用 main() 替换为其他内容,例如 print("Would call main() here"),会发生什么? 您确定不会再次以写入模式('w')打开文件,对吧? 哦,好吧,我进行了搜索,碰巧我开始在 main() 中使用 open(config.txt) 进行编码,但几个小时前还没有完成……这真是个笨孩子。但是你结束了数小时的痛苦……谢谢。 【参考方案1】:

碰巧我在 main() 中编写了以下行并且没有关闭 config.txt:

config=open("config.txt","w+")

忘记了... 谢谢你们的提示。 我现在要躲到一个很黑的地方。

【讨论】:

以上是关于调用下一个函数后file.txt内容消失的主要内容,如果未能解决你的问题,请参考以下文章

python怎么在异常处理后继续顺序执行?

Linux怎么将一个文件后五行内容转存到其他目录下?

调用 replace() 方法后片段闪烁/闪烁

用js实现点击按钮 显示div 然后两秒后消失 但是只能执行一次 怎么才能做到可以重复调用 求助

viewcontroller 的一个属性在 viewDidLoad 被调用后消失

SKSpriteNode 从屏幕上消失后如何删除或销毁它