![](/img/trans.png)
[英]Python checking if file exists (returns false, should return true)
[英]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.