如何结束在 python 3.11 中提供输入的无限循环

How to end an endless loop of providing input in python 3.11

提问人:Jaxer5636 提问时间:4/16/2023 更新时间:4/16/2023 访问量:74

问:

我正在制作一个能够创建、修改、读取和删除文件的终端模拟器。 create、read 和 delete 函数都可以正常工作,但是我在使 create 函数工作到我只需要调用一次而不是每行调用一次的程度时遇到了问题。

我尝试制作一个 while 循环并尝试添加一个热键来打破循环,但每当我测试热键的想法时,我都无法实际运行程序的其余部分,因为脚本会在监听热键时挂断要按下的热键。

我看起来像这样的循环

while True:
        try:
            f = open(fileName, 'a')
            while running == True:
                f.write(input('Enter text here:\n')+'\n')
            f.close
            break
        except:
            print('\nFile does not exist')
            break

我会运行它,它允许输入代码行,但是在我输入我想要的行数后,我无法保存和关闭文件。

python-3.x 字符串 while-loop 终端

评论

1赞 Brian61354270 4/16/2023
请注意,这不执行任何操作。你可能想写.也就是说,像这样的手动资源处理是不明智的。您应该考虑改用上下文管理器:f.closef.close()with open(fileName, 'a') as f:

答:

0赞 Jaxer5636 4/16/2023 #1

在看了 @Brian61354270 的评论后,我发现的一种方法是将整个块放入上下文管理器中,同时仍然在一个循环中withwhile

最终我得到了这个,这似乎有效。

while True:
        with open(fileName, 'a') as f:
            try:
                f.write(input()+'\n')
            except KeyboardInterrupt:
                break

我在程序中根本不需要 KeyboardInterrupt,因为除非我正在编辑文件,否则我有一个内置的退出函数,只需调用exit()