Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python文件未附加到Raspberry Pi上_Python_File_Append_Raspberry Pi4 - Fatal编程技术网

Python文件未附加到Raspberry Pi上

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

我对Python和Pi'ing非常陌生,希望得到一些关于在Raspberry Pi上附加文本文件的帮助。我的脚本将调用GET或POST REST API,并编写每次调用的时间、状态和原因

我从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内部进行调试时不显示任何内容。我还尝试了它,但没有使用,并且特别声明了
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)使我看不到我的更改(或任何以前的数据)