【发布时间】:2013-05-24 11:09:27
【问题描述】:
每次更改 less 文件时,我都编写了简单的脚本来更新我的 CSS 样式(从 less 到 css)。我现在有:
import time
import hashlib
from subprocess import call
def md5_checksum(filePath):
fh = open(filePath, 'rb')
m = hashlib.md5()
m.update(fh.read())
fh.close()
return m.hexdigest()
md5 = md5_checksum('styles.less')
while True:
newmd5 = md5_checksum('styles.less')
if md5 != newmd5:
sh = open('styles.css', 'w')
call(['lessc', 'styles.less'], stdout=sh)
md5 = newmd5
sh.close()
print 'Changed'
time.sleep(0.2)
奇怪的是,脚本运行了一段时间:
Changed
Changed
Changed
Changed
Traceback (most recent call last):
File "watcher.py", line 16, in <module>
newmd5 = md5_checksum('styles.less')
File "watcher.py", line 7, in md5_checksum
fh = open(filePath, 'rb')
IOError: [Errno 2] No such file or directory: 'styles.less'
怎么了?文件仍然存在 100%。我做错了什么?
【问题讨论】:
-
文件被我的另一个进程替换了吗?然后您可以轻松捕捉到旧条目被删除而新文件尚不可用的时刻!
-
您是在 Windows 下运行吗?许多防病毒工具与文件系统操作的交互很糟糕。 :-(
-
jszakmeister:Linux。 Martijn:文件由我在 vim 中编辑。我认为你是对的 ;) 可能当我在 vim 中按 :w 时,vim 需要一些时间来替换该文件。这说得通。谢谢:)
-
但是……它是怎么做的?每个文件都有一个创建时间。那么当文件被替换时,创建时间也应该被替换?如果文件被替换,为什么创建时间没有改变?如果文件没有被替换,为什么我不能打开阅读?