我有读出和写入到一个临时文件的问题:
import tempfile
def edit(base):
tmp = tempfile.NamedTemporaryFile(mode='w+')
#fname = tmp.name
tmp.write(base)
#system('nano %s' % fname)
content = tmp.readlines()
tmp.close()
return content
answer = "hi"
print(edit(answer))
输出为[]
,而不是["hi"]
我不知道背后的原因,
感谢您的帮助
答案 0 :(得分:0)
临时文件仍然是文件;它们具有指向文件中当前位置的“指针”。对于新写入的文件,指针位于最后一次写入的末尾,因此,如果您write
没有进行seek
存取,则将从文件末尾读取内容,但不会得到任何结果。只需添加:
tmp.seek(0)
在write
之后,您将选择在下一个read
/ readlines
中写的内容。
如果目标仅仅是使数据对其他人可见,请按名称打开文件,例如在注释掉的代码中使用外部程序(例如nano
),可以跳过seek
,但是您需要确保将数据从缓冲区刷新到磁盘,因此要在{{ 1}},您将添加:
write
答案 1 :(得分:0)
您因为游标的位置是错的。 当您写入文件时,光标将停在文本的最后。然后,你正在阅读这意味着什么。因为光标读取数据是在其位置之后。要进行快速修复,代码必须如下所示:
import tempfile
def edit(base):
tmp = tempfile.NamedTemporaryFile(mode='w+')
#fname = tmp.name
tmp.write(base)
tmp.seek(0, 0) # This will rewind the cursor
#system('nano %s' % fname)
content = tmp.readlines()
tmp.close()
return content
answer = "hi"
print(edit(answer))
您可能需要阅读有关的文档。 https://docs.python.org/3/tutorial/inputoutput.html?highlight=seek#methods-of-file-objects