1from natural.date import duration
2from natural.size import filesize
3import os
4import stat
5
6
7def accessed(filename):
8    '''
9    Retrieve how long ago a file has been accessed.
10
11    :param filename: name of the file
12
13    >>> print accessed(__file__)        # doctest: +SKIP
14    just now
15    '''
16    if isinstance(filename, file):
17        filename = filename.name
18
19    return duration(os.stat(filename)[stat.ST_ATIME])
20
21
22def created(filename):
23    '''
24    Retrieve how long ago a file has been created.
25
26    :param filename: name of the file
27
28    >>> print created('/')             # doctest: +SKIP
29    8 weeks ago
30    '''
31    if isinstance(filename, file):
32        filename = filename.name
33
34    return duration(os.stat(filename)[stat.ST_CTIME])
35
36
37def modified(filename):
38    '''
39    Retrieve how long ago a file has been modified.
40
41    :param filename: name of the file
42
43    >>> print modified('/')             # doctest: +SKIP
44    3 days ago
45    '''
46    if isinstance(filename, file):
47        filename = filename.name
48
49    return duration(os.stat(filename)[stat.ST_MTIME])
50
51
52def size(filename, format='decimal'):
53    '''
54    Retrieve the size of a file.
55
56    :param filename: name of the file
57
58    >>> size('/etc/mime.types')         # doctest: +SKIP
59    23.70 kB
60
61    '''
62    if isinstance(filename, file):
63        filename = filename.name
64
65    return filesize(os.stat(filename)[stat.ST_SIZE], format)
66