我们从Python开源项目中,提取了以下8个代码示例,用于说明如何使用os.stat_float_times()。
def setUp(self): self.dirname = support.TESTFN self.fname = os.path.join(self.dirname, "f1") self.addCleanup(support.rmtree, self.dirname) os.mkdir(self.dirname) with open(self.fname, 'wb') as fp: fp.write(b"ABC") def restore_float_times(state): with warnings.catch_warnings(): warnings.simplefilter("ignore", DeprecationWarning) os.stat_float_times(state) # ensure that st_atime and st_mtime are float with warnings.catch_warnings(): warnings.simplefilter("ignore", DeprecationWarning) old_float_times = os.stat_float_times(-1) self.addCleanup(restore_float_times, old_float_times) os.stat_float_times(True)
def getmtime(x): sft = stat_float_times() stat_float_times(True) try: return _getmtime(x) finally: stat_float_times(sft)
def _test_utime_subsecond(self, set_time_func): asec, amsec = 1, 901 atime = asec + amsec * 1e-3 msec, mmsec = 2, 901 mtime = msec + mmsec * 1e-3 filename = self.fname os.utime(filename, (0, 0)) set_time_func(filename, atime, mtime) with warnings.catch_warnings(): warnings.simplefilter("ignore", DeprecationWarning) os.stat_float_times(True) st = os.stat(filename) self.assertAlmostEqual(st.st_atime, atime, places=3) self.assertAlmostEqual(st.st_mtime, mtime, places=3)
def __call__(self, *args, **kwargs): """ Run command and return its dependencies and outputs, using before and after access times to determine dependencies. """ # For Python pre-2.5, ensure os.stat() returns float atimes old_stat_float = os.stat_float_times() os.stat_float_times(True) originals = self.file_times() if self.atimes == 2: befores = originals atime_resolution = 0 mtime_resolution = 0 else: befores = self._age_atimes(originals) atime_resolution = FAT_atime_resolution mtime_resolution = FAT_mtime_resolution shell_keywords = dict(silent=False) shell_keywords.update(kwargs) shell(*args, **shell_keywords) afters = self.file_times() deps = [] outputs = [] for name in afters: if name in befores: # if file exists before+after && mtime changed, add to outputs # Note: Can't just check that atimes > than we think they were # before because os might have rounded them to a later # date than what we think we set them to in befores. # So we make sure they're > by at least 1/2 the # resolution. This will work for anything with a # resolution better than FAT. if afters[name][1]-mtime_resolution/2 > befores[name][1]: if not self.ignore(name): outputs.append(name) elif afters[name][0]-atime_resolution/2 > befores[name][0]: # otherwise add to deps if atime changed if not self.ignore(name): deps.append(name) else: # file created (in afters but not befores), add as output if not self.ignore(name): outputs.append(name) if self.atimes < 2: # Restore atimes of files we didn't access: not for any functional # reason -- it's just to preserve the access time for the user's info for name in deps: originals.pop(name) for name in originals: original = originals[name] if original != afters.get(name, None): self._utime(name, original[0], original[1]) os.stat_float_times(old_stat_float) # restore stat_float_times value return deps, outputs