Python文件未附加到Raspberry Pi上
我对Python和Pi'ing非常陌生,希望得到一些关于在Raspberry Pi上附加文本文件的帮助。我的脚本将调用GET或POST REST API,并编写每次调用的时间、状态和原因 我从grepit的评论中得到了通话信息,效果很好 对于附加文件,我使用以下代码:Python文件未附加到Raspberry Pi上,python,file,append,raspberry-pi4,Python,File,Append,Raspberry Pi4,我对Python和Pi'ing非常陌生,希望得到一些关于在Raspberry Pi上附加文本文件的帮助。我的脚本将调用GET或POST REST API,并编写每次调用的时间、状态和原因 我从grepit的评论中得到了通话信息,效果很好 对于附加文件,我使用以下代码: #...Some working code... dateNow = datetime.datetime.now() string = ("\n" + dateNow.strftime("%c&qu
#...Some working code...
dateNow = datetime.datetime.now()
string = ("\n" + dateNow.strftime("%c") + " - " + str(response.status) +
": " + response.reason + "\n")
with open('MyCallLog.txt', 'a+') as file:
file.write(string)
关于类似的问题,我读到的是文件没有关闭或刷新。但是,如果我尝试在“with”外部使用print(file.read())
进行调试,则会出现一个错误,即文件已关闭,而在with内部进行调试时不显示任何内容。我还尝试了它,但没有使用,并且特别声明了file.close()
。我已经使用print(string)
调试了string变量,它按预期显示
有什么建议吗
最后说明:
- 我知道以“a+”方式打开文件时,会以读写模式打开文件。这目前仅用于我的调试目的
“a+”
打开文件时,光标位于文件的末尾。这就是调用.write()
将附加到文件末尾而不是覆盖它的原因
在with
块中调用file.read()
时,它从最后一个字符开始读取文件,这就是打印输出为空的原因
要打印您需要查找到文件开头的内容
打开(“myfile.txt”,“a+”)作为文件:
file.write(“一些文本”)
file.seek(0)
打印(file.read())#“一些文本”
更好的是,只需再次打开该文件进行调试
with open("myfile.txt", "a+") as file:
file.write("some_text")
with open("myfile.txt", "r") as file:
print(file.read())
您要追加的代码实际上是正确的。CWD中应该有一个包含所有尝试的文件
另外,当您尝试在with
块外部调用.read()
时出错的原因是,当块退出时,会隐式调用file.close()
open()
返回一个上下文管理器。您可以阅读python中的上下文管理器。它们非常有用,值得了解。我经常在工作中编写新的上下文管理器。另外,请使用str.format()
函数和/或“f-strings”查看字符串格式。这将使字符串连接比当前使用的JS格式简单得多。没有看到整个函数或更多代码,我无法确定发生了什么。也许如果你的脚本一直在运行,你总是在上下文管理器中?试试上面的代码片段;我尝试了一些类似的东西(只是一个不同的字符串),效果很好。(也在Pi上)。只需确保您正在查看在当前目录中创建的文件。回答很好,提及上下文管理器的详细信息也很好。太好了,谢谢!所以我玩了一会儿,它似乎在实际文件中工作,但是file.seek(0)使我看不到我的更改(或任何以前的数据)