Python 文件未附加到 Raspberry Pi
Python file not appending on Raspberry Pi
我对 Python 和 Pi'ing 很陌生,希望获得有关在 Raspberry Pi 上附加文本文件的帮助。我的脚本将调用 GET 或 POST REST API 并写下每次调用的时间、状态和原因。
我在 Simple URL GET/POST function in Python 中从 grepit 的评论中获得了呼叫信息,并且效果很好。
为了附加我的文件,我使用以下代码:
#...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 内进行调试不显示任何内容。我也试过没有 with 并特别说明 file.close()
。我已经使用 print(string)
调试了字符串变量,它按预期显示。
有什么建议吗?
最后的笔记:
- 我知道以 'a+' 格式打开文件确实以读写模式打开它。这目前仅用于我的调试目的。
当使用 "a+"
以追加模式打开文件时,光标位于文件末尾。这就是为什么对 .write()
的调用将追加到文件末尾而不是覆盖它。
当您在 with
块中调用 file.read()
时,它会从最后一个字符开始读取文件,这就是打印输出为空的原因。
打印你需要查找的内容到文件开头。
with open("myfile.txt", "a+") as file:
file.write("some_text")
file.seek(0)
print(file.read()) # "some_text"
更好的是,只需再次打开文件进行调试。
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()
returns 一个 上下文管理器 。您可以在 python here 中阅读有关上下文管理器的信息。它们非常有用,值得了解。我经常在工作中编写新的上下文管理器。
我对 Python 和 Pi'ing 很陌生,希望获得有关在 Raspberry Pi 上附加文本文件的帮助。我的脚本将调用 GET 或 POST REST API 并写下每次调用的时间、状态和原因。
我在 Simple URL GET/POST function in Python 中从 grepit 的评论中获得了呼叫信息,并且效果很好。
为了附加我的文件,我使用以下代码:
#...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 内进行调试不显示任何内容。我也试过没有 with 并特别说明 file.close()
。我已经使用 print(string)
调试了字符串变量,它按预期显示。
有什么建议吗?
最后的笔记:
- 我知道以 'a+' 格式打开文件确实以读写模式打开它。这目前仅用于我的调试目的。
当使用 "a+"
以追加模式打开文件时,光标位于文件末尾。这就是为什么对 .write()
的调用将追加到文件末尾而不是覆盖它。
当您在 with
块中调用 file.read()
时,它会从最后一个字符开始读取文件,这就是打印输出为空的原因。
打印你需要查找的内容到文件开头。
with open("myfile.txt", "a+") as file:
file.write("some_text")
file.seek(0)
print(file.read()) # "some_text"
更好的是,只需再次打开文件进行调试。
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()
returns 一个 上下文管理器 。您可以在 python here 中阅读有关上下文管理器的信息。它们非常有用,值得了解。我经常在工作中编写新的上下文管理器。