这个问题是我在another thread中问题的延续。由于这个问题的观点稍有不同,我想我应该把它作为一个新的问题发表。在
我尝试使用python
来获取我的linux
机器(ubuntu lucid
)中的一些文件的访问时间,这个想法是要有一个函数,它可以遍历特定目录中的文件,查看它们是否在过去2分钟内被访问过,并且只打印那些没有被访问的文件。在
为了访问文件,我定义了一个readfile()
方法
def readfile(fname):
with open(fname) as f:
ct = f.read()
print 'read file at:',time.time()
print 'length of file:',len(ct)
为了方便起见,我定义了一些文件名
^{pr2}$因此调用readfile(f1)
将访问文件one.txt
我定义了另一个函数来遍历目录并打印那些在过去2分钟内未被访问的文件
def files_not_accessed():
dirname = '/home/me/dev/misc/usedfiles'
filenames = os.listdir(dirname)
filenames = [os.path.join(dirname,filename) for filename in filenames]
for filename in filenames:
try:
last_access = os.stat(filename).st_atime #secs since epoch
except IOError:
print 'could not get info about %s' % filename
else:
timediff = time.time()-last_access
print filename,' last_access=',last_access
print filename,' timediff=',timediff
if timediff > 2*60:
print filename,'---older than 2 mts'
print ''
最初我运行函数files_not_accessed()
,它给出了以下输出
/home/me/dev/misc/usedfiles/two.txt last_access= 1341459500.0
/home/me/dev/misc/usedfiles/two.txt timediff= 11668.9905779
/home/me/dev/misc/usedfiles/two.txt ---older than 2 mts
/home/me/dev/misc/usedfiles/one.txt last_access= 1341460126.0
/home/me/dev/misc/usedfiles/one.txt timediff= 11042.990674
/home/me/dev/misc/usedfiles/one.txt ---older than 2 mts
/home/me/dev/misc/usedfiles/three.txt last_access= 1341459504.0
/home/me/dev/misc/usedfiles/three.txt timediff= 11664.99072
/home/me/dev/misc/usedfiles/three.txt ---older than 2 mts
/home/me/dev/misc/usedfiles/four.txt last_access= 1341459510.0
/home/me/dev/misc/usedfiles/four.txt timediff= 11658.990757
/home/me/dev/misc/usedfiles/four.txt ---older than 2 mts
现在,我运行readfile(f1)
函数来读取文件one.txt
read file at: 1341471195.88
length of file: 47293
从files_not_accessed()
函数的输出可以看出,文件one.txt
最后一次访问是在1341460126.0,现在它再次被readfile(f1)
读取到1341471195.88
并且(立即)运行files_not_accessed()
函数,并预期它不会输出文件one.txt
,因为它最近被访问过,我预期它的最后一次访问时间是1341471195.88
奇怪的是,我又得到了以前的输出
/home/me/dev/misc/usedfiles/two.txt last_access= 1341459500.0
/home/me/dev/misc/usedfiles/two.txt timediff= 11715.1272521
/home/me/dev/misc/usedfiles/two.txt ---older than 2 mts
/home/me/dev/misc/usedfiles/one.txt last_access= 1341460126.0
/home/me/dev/misc/usedfiles/one.txt timediff= 11089.1273479
/home/me/dev/misc/usedfiles/one.txt ---older than 2 mts
/home/me/dev/misc/usedfiles/three.txt last_access= 1341459504.0
/home/me/dev/misc/usedfiles/three.txt timediff= 11711.1273921
/home/me/dev/misc/usedfiles/three.txt ---older than 2 mts
/home/me/dev/misc/usedfiles/four.txt last_access= 1341459510.0
/home/me/dev/misc/usedfiles/four.txt timediff= 11705.1274359
/home/me/dev/misc/usedfiles/four.txt ---older than 2 mts
我不明白为什么文件one.txt
具有最后的访问权限1341460126.0
,而不是预期的{
知道为什么会这样吗?在
默认情况下,ubuntulucid用“relatime”挂载文件系统。如果您需要严格的时间,您需要安装“strictatime”(以性能为代价)。在
相关问题 更多 >
编程相关推荐