Kind of puzzled about timestamps
Bruce Labitt
bruce.labitt at myfairpoint.net
Thu Mar 4 18:43:15 EST 2021
This is an odd question. It involves both python and linux.
Have a bunch of files in a directory that I'd like like to sort by
similar names and in time order. This isn't particularly difficult in
python. What is puzzling me is the modified timestamp returned by
python doesn't match whats reported by the file manager nautilus or even
ls. (ls and nautilus are consistent)
$ lsb_release -d Ubuntu 20.04.2 LTS
$ nautilus --version GNOME nautilus 3.36.3
$ python3 --version Python 3.8.5
$ ls -lght
total 4.7M
-rw-r--r-- 1 bruce 209K Feb 26 01:49 20210226_022134_PLD.edf
-rw-r--r-- 1 bruce 65K Feb 26 01:49 20210226_022134_SAD.edf
-rw-r--r-- 1 bruce 2.4M Feb 26 01:49 20210226_022133_BRP.edf
-rw-r--r-- 1 bruce 1.1K Feb 26 00:58 20210225_224134_EVE.edf
-rw-r--r-- 1 bruce 1.9M Feb 25 21:18 20210225_224141_BRP.edf
-rw-r--r-- 1 bruce 169K Feb 25 21:17 20210225_224142_PLD.edf
-rw-r--r-- 1 bruce 53K Feb 25 21:17 20210225_224142_SAD.edf
Python3 script
#!/usr/bin/env python3
import os
from datetime import datetime
def convert_date(timestamp):
d = datetime.utcfromtimestamp(timestamp)
formatted_date = d.strftime('%d %b %Y %H:%M:%S')
return formatted_date
with os.scandir('feb262021') as entries:
for entry in entries:
if entry.is_file():
info = entry.stat()
print(f'{entry.name}\t Last Modified:
{convert_date(info.st_mtime) }' ) # last modification
info /(after exit) contains/: os.stat_result(st_mode=33188,
st_ino=34477637, st_dev=66306, st_nlink=1, st_uid=1000, st_gid=1000,
st_size=213416, st_atime=1614379184, st_mtime=1614322176,
st_ctime=1614379184)
Running the script results in:
20210226_022133_BRP.edf Last Modified: 26 Feb 2021 06:49:34
20210225_224141_BRP.edf Last Modified: 26 Feb 2021 02:18:42
20210225_224142_PLD.edf Last Modified: 26 Feb 2021 02:17:44
20210225_224142_SAD.edf Last Modified: 26 Feb 2021 02:17:44
20210225_224134_EVE.edf Last Modified: 26 Feb 2021 05:58:26
20210226_022134_SAD.edf Last Modified: 26 Feb 2021 06:49:36
20210226_022134_PLD.edf Last Modified: 26 Feb 2021 06:49:36
Actually, what is returned by my script is at least sensible, given that
20210225_224141_BRP.edf started on Feb 25th and ended recording at
2:17am on Feb 26th. I know this because I can see the data on a
separate program. 20210226_022133_BRP.edf started on Feb 26th at around
2:21am and terminated at 6:49am. BRP files are written to continuously
at a 25 Hz rate all evening. What makes no sense whatsoever is what
*ls* is reporting.
Do *ls* and python3 use different definitions of "last modified"?
Guess I can keep going, but I really was surprised at the difference
between methods. Default for ls is "last modified", at least as
reported by man. ls's last modified just isn't correct, at least on
Ubuntu 20.04.2
Is this a quirk? Am I doing something wrong? Some kind of voodoo
definition of "last modified"? What does Linux say "last modified"
really means?
FWIW, I am coming up to speed on processing these edf files to help out
on an open source project. Been working on some data analysis tools.
As an aside, biological data is very messy. It's been a treat to work
on this as it's forced me to dust off the mental cobwebs and work on a
problem that can help a lot of people.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.gnhlug.org/pipermail/gnhlug-discuss/attachments/20210304/d6a88d2f/attachment.html
More information about the gnhlug-discuss
mailing list