我是python的新手,我编写了一个python脚本,它执行以下操作:
我面临的问题是,一旦写入文件(a.txt)并读取相同内容,就不会读取内容。
在写入txt文件(a.txt)之后我使用time.sleep()
然后继续读取它。
但是发生的事情是脚本在sleep方法中提到的时间段内停止执行,并且没有读取txt文件。
我需要一个场景,其中相同的脚本必须写入文本文件并立即阅读。
有人可以帮帮我吗?提前谢谢。答案 0 :(得分:3)
如果您写入文件,则“当前位置”位于写入后文件的末尾。要从同一个文件中读取,您必须使用seek方法转到文件的开头。
foo = open("bla.txt", "w+")
foo.write("your text here")
foo.seek(0)
lines = foo.readlines()
答案 1 :(得分:0)
为了读取您刚刚写入的文件,只需要关闭文件(从而刷新缓冲区),您不需要使用sleep方法进行阻止,例如
filepath="myfilepath"
with open(filepath,'w') as f:
f.write("hello")
with open(filepath,'r') as f:
print(f.read())
在这种情况下,“with”关键字会在文件块关闭时自动调用文件上的f.close()。 “with”关键字在早期版本的python中不起作用。以上相当于明确地这样做:
filepath="myfilepath"
f = open(filepath,'w')
f.write("hello")
f.close()
f = open(filepath,'r')
print(f.read())
f.close()
close函数刷新缓冲区。
根据您的使用情况,使用其他类型的数据结构来存储临时值(如简单变量)可能更好。玩得开心学习python。
编辑:在python 2.5中引入了“with”语句
答案 2 :(得分:0)
我怀疑这种方法在这种情况下并不是最好的。
为什么你需要按顺序写入和读取完全相同的文件?
看起来你正在做类似
的事情while True:
big_string = generate_big_string()
open(filename, 'w').write(big_string)
big_string = open(filename).read()
如果是这种情况,那么只需将字符串保留在内存中,写入和读取就没有意义了。 如果情况并非如此,那么您应该发布一些代码以获得更好的帮助。