summaryrefslogtreecommitdiffstatshomepage
path: root/docs/library/uos.rst
blob: d1f83d2cc398706db0eb7ddfec2cd2309353b1ad (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
:mod:`uos` -- basic "operating system" services
===============================================

.. module:: uos
   :synopsis: basic "operating system" services

The ``os`` module contains functions for filesystem access and ``urandom``
function.

Port specifics
--------------

The filesystem has ``/`` as the root directory and the
available physical drives are accessible from here.  They are currently:

    ``/flash``      -- the internal flash filesystem

    ``/sd``         -- the SD card (if it exists)

.. only:: port_pyboard

    On boot up, the current directory is ``/flash`` if no SD card is inserted,
    otherwise it is ``/sd``.

.. only:: port_wipy

    On boot up, the current directory is ``/flash``.

Functions
---------

.. function:: chdir(path)

   Change current directory.

.. function:: getcwd()

   Get the current directory.

.. function:: ilistdir([dir])

   This function returns an iterator which then yields 3-tuples corresponding to
   the entries in the directory that it is listing.  With no argument it lists the
   current directory, otherwise it lists the directory given by `dir`.

   The 3-tuples have the form `(name, type, inode)`:

    - `name` is a string (or bytes if `dir` is a bytes object) and is the name of
      the entry;
    - `type` is an integer that specifies the type of the entry, with 0x4000 for
      directories and 0x8000 for regular files;
    - `inode` is an integer corresponding to the inode of the file, and may be 0
      for filesystems that don't have such a notion.

.. function:: listdir([dir])

   With no argument, list the current directory.  Otherwise list the given directory.

.. function:: mkdir(path)

   Create a new directory.

.. function:: remove(path)

   Remove a file.

.. function:: rmdir(path)

   Remove a directory.

.. function:: rename(old_path, new_path)

   Rename a file.

.. function:: stat(path)

   Get the status of a file or directory.

.. function:: statvfs(path)

   Get the status of a fileystem.

   Returns a tuple with the filesystem information in the following order:

        * ``f_bsize`` -- file system block size
        * ``f_frsize`` -- fragment size
        * ``f_blocks`` -- size of fs in f_frsize units
        * ``f_bfree`` -- number of free blocks
        * ``f_bavail`` -- number of free blocks for unpriviliged users
        * ``f_files`` -- number of inodes
        * ``f_ffree`` -- number of free inodes
        * ``f_favail`` -- number of free inodes for unpriviliged users
        * ``f_flag`` -- mount flags
        * ``f_namemax`` -- maximum filename length

   Parameters related to inodes: ``f_files``, ``f_ffree``, ``f_avail``
   and the ``f_flags`` parameter may return ``0`` as they can be unavailable
   in a port-specific implementation.

.. function:: sync()

   Sync all filesystems.

.. function:: urandom(n)

   Return a bytes object with n random bytes. Whenever possible, it is
   generated by the hardware random number generator.

.. only:: port_wipy

    .. function:: mount(block_device, mount_point, \*, readonly=False)

       Mounts a block device (like an ``SD`` object) in the specified mount
       point. Example::

          os.mount(sd, '/sd')

    .. function:: unmount(path)

       Unmounts a previously mounted block device from the given path.

    .. function:: mkfs(block_device or path)

       Formats the specified path, must be either ``/flash`` or ``/sd``.
       A block device can also be passed like an ``SD`` object before
       being mounted.

    .. function:: dupterm(stream_object)

       Duplicate the terminal (the REPL) on the passed stream-like object.
       The given object must at least implement the ``.read()`` and ``.write()`` methods.