Call a text-editor from within a Python script to get user input
click is a great library for command line processing and it has some utilities, click.edit() is portable and uses the EDITOR environment variable.  I typed the line, stuff, into the editor.  Notice it is returned as a string. Nice.

So, rather then write any code, you could consider replacing what your working on with these two lines:

(venv) /tmp/editor $ export EDITOR='=mvim -f'
(venv) /tmp/editor $ python
&gt;&gt;&gt; import click
&gt;&gt;&gt; click.edit()
'stuff\n'


Check out the docs https://click.palletsprojects.com/en/7.x/utils/#launching-editors  My entire experience:

/tmp $ mkdir editor
/tmp $ cd editor
/tmp/editor $ python3 -m venv venv
/tmp/editor $ source venv/bin/activate
(venv) /tmp/editor $ pip install click
Collecting click
  Using cached https://files.pythonhosted.org/packages/fa/37/45185cb5abbc30d7257104c434fe0b07e5a195a6847506c074527aa599ec/Click-7.0-py2.py3-none-any.whl
Installing collected packages: click
Successfully installed click-7.0
You are using pip version 19.0.3, however version 19.3.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
(venv) /tmp/editor $ export EDITOR='=mvim -f'
(venv) /tmp/editor $ python
Python 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 16:52:21)
[Clang 6.0 (clang-600.0.57)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
&gt;&gt;&gt; import click
&gt;&gt;&gt; click.edit()
'stuff\n'
&gt;&gt;&gt;


I would check out the source code for click.edit() if you want to write your own.