繁体   English   中英

在python中检查.txt文件的上下文:True,False

[英]checking the context of a .txt file in python: True, False

我有一个.txt文件,其中包含一个字符串。 我想打开文件,检查字符串是什么,并根据结果更改文件。

以下是我尝试使其工作的方式:

file = open('flag.txt', 'r+')
flagtext = file.read()
if flagtext == 'a':
  print('a')
elif flagtext == 'b':
  print('b')
  file.close()
  file = open('flag.txt', 'w+')
  file.write('a')
  file.close()

出于某种原因,这不起作用,并且在我的故障排除中,我发现,对于flagtext == 'a'或者对于flagtext == 'b' ,文件(和flagtext)的内容永远不会是真的,即使在我之后我创建的文件只是那封信。

我已经尝试过file.read() == 'a'flagtext == 'a' ,我无法让它们中的任何一个成为现实。 这可能是因为文本文件有第二行,因为如果我只是print(file)那么输出就是

a


但我尝试进入并手动删除文本后的任何行,但我似乎无法坚持下去。

并且,如果所有这一切都是完全屁股向后完成我想要的方式:这是我更大的图片目标。

我有一个在后台运行的python脚本。 我希望能够从脚本外部改变它的行为。 我的想法是让它定期检查这个文本文件的内容,所以我只需要更改文本文件来改变脚本行为。 如果有更好的方法来实现这个目标,我很乐意听到它。

谢谢

您的变量名称是file ,但是您正在读取flag变量,请更改:

file = open('flag.txt', 'r+')

至:

flag = open('flag.txt', 'r+')

并且,要忽略那些尾随空格/换行符,请使用rstrip

flagtext = flag.read().rstrip()

此外,您应该使用上下文管理器打开您的文件,以避免close文件时丢失的问题(这是因为在您的if块中,您没有关闭文件):

with open('flag.txt', 'r+') as flag:
    flagtext = flag.read().rstrip()
...

with open('flag.txt', 'w+') as flag:
    flag.write('a')

这样,退出with块后文件将自动关闭。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM