summaryrefslogtreecommitdiff
path: root/doc/api/pexpect.rst
blob: 565f0ef54fcbbcfef678f1b3db07cde9ad30fa5d (plain)
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
Core pexpect components
=======================

.. automodule:: pexpect

spawn class
-----------

.. autoclass:: spawn

   .. automethod:: __init__
   .. automethod:: expect
   .. automethod:: expect_exact
   .. automethod:: expect_list
   .. automethod:: compile_pattern_list
   .. automethod:: send
   .. automethod:: sendline
   .. automethod:: write
   .. automethod:: writelines
   .. automethod:: sendcontrol
   .. automethod:: sendeof
   .. automethod:: sendintr
   .. automethod:: read
   .. automethod:: readline
   .. automethod:: read_nonblocking
   .. automethod:: eof
   .. automethod:: interact

   .. attribute:: logfile
                  logfile_read
                  logfile_send

      Set these to a Python file object (or :data:`sys.stdout`) to log all
      communication, data read from the child process, or data sent to the child
      process.

      .. note::

         With a :class:`spawn` instance, the log files should be open for
         writing binary data. With a :class:`spawnu` instance, they should
         be open for writing unicode text.

Controlling the child process
`````````````````````````````

.. class:: spawn

   .. automethod:: kill
   .. automethod:: terminate
   .. automethod:: isalive
   .. automethod:: wait
   .. automethod:: close
   .. automethod:: getwinsize
   .. automethod:: setwinsize
   .. automethod:: getecho
   .. automethod:: setecho
   .. automethod:: waitnoecho

   .. attribute:: pid

      The process ID of the child process.

   .. attribute:: child_fd

      The file descriptor used to communicate with the child process.

.. _unicode:

Handling unicode
````````````````

For backwards compatibility, :class:`spawn` can handle some Unicode: its
send methods will encode arbitrary unicode as UTF-8 before sending it to the
child process, and its expect methods can accept ascii-only unicode strings.
However, for a proper unicode API to a subprocess, use this subclass:

.. autoclass:: spawnu
   :show-inheritance:

There is also a :func:`runu` function, the unicode counterpart to :func:`run`.

.. note::

   Unicode handling with pexpect works the same way on Python 2 and 3, despite
   the difference in names. I.e.:

   - :class:`spawn` works with ``str`` on Python 2, and :class:`bytes` on Python 3,
   - :class:`spawnu` works with ``unicode`` on Python 2, and :class:`str` on Python 3.

run function
------------

.. autofunction:: run

.. autofunction:: runu

Exceptions
----------

.. autoclass:: EOF

.. autoclass:: TIMEOUT

.. autoclass:: ExceptionPexpect

Utility functions
-----------------

.. autofunction:: which

.. autofunction:: split_command_line