2012-02-29 38 views
0

我是比较新的蟒蛇,我已经写了一个Python脚本,执行以下操作:如何让python脚本等待一段时间?

  1. 它做一些操作和写操作的细节到一个文本文件(比如A.TXT)
  2. 一旦写入txt文件(a.file),就会读取相同的文件以执行一些操作。

我面临的问题是一旦写入文件(a.txt)并读取相同内容,则不会读取内容。

我使用time.sleep()在txt文件(a.txt)被写入后,然后继续读取它。

但最新情况是脚本正在停止它在sleep方法中提到的时间段内执行,并且txt文件未被读取。

我需要一个场景,其中相同的脚本必须写入文本文件并立即阅读。

有人可以帮我吗?提前致谢。

+7

请增加你的代码 – 2012-02-29 17:42:47

+0

你关闭了文件吗? – jterrace 2012-02-29 17:43:17

+0

另外,写完之后你是否冲洗缓冲区? – 2012-02-29 17:43:30

回答

0

为了看你刚才写它应该只需要关闭该文件(从而刷新缓冲区),你不应该需要睡眠的方法来阻止,例如

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() 

关闭函数刷新缓冲区。

根据您的使用情况,最好使用其他类型的数据结构来存储您的临时值,如简单变量。玩得开心学习python。

编辑:“同向”声明是在Python 2.5

3

介绍如果你写一个文件,“当前位置”是在写后的文件的末尾。要从同一个文件读取,您必须使用seek方法转到文件的开头。

foo = open("bla.txt", "w+") 
foo.write("your text here") 
foo.seek(0) 
lines = foo.readlines() 
+0

确保你用'w +'(用于更新)打开文件,否则只是做'w'不会让你从文件中读取。 – jdi 2012-02-29 18:01:45

+0

修复,谢谢。 – 2012-02-29 18:09:07

+0

Upvoted因为它迄今为止唯一的答案,不打开文件两次。 – jdi 2012-02-29 18:24:38

0

我怀疑这种方法不是最好的。

为什么你需要在完全相同的文件上顺序写入和读取?

看起来你正在做的事情一样

while True: 
    big_string = generate_big_string() 
    open(filename, 'w').write(big_string) 
    big_string = open(filename).read() 

,如果是这样的话那么就保存在内存中的串,有书面形式没有点和阅读所有的时间。 如果情况并非如此,那么您应该发布一些代码以获得更好的帮助。

相关问题