[Tutor] subprocess and launching an editor

Brian van den Broek broek at cc.umanitoba.ca
Fri Jun 22 16:57:02 CEST 2007


Hi all,

I want to have a script launch an editor open to a particular file and 
wait until that editor has closed before continuing. The aim is to 
allow the user to make edits to the file, have to script know that the 
edits are completed, and then make use of the newly saved file contents.

gedit is the default text editor on my ubuntu feisty system, so in the 
first instance, I've tried to do this with gedit. The subprocess.call:

 >>> subprocess.call("gedit somefilename", shell=True)

works just fine *provided* that no instance of gedit is running when I 
invoke .call. However, if there is a gedit window up and running 
(there usually is on my system ;-), the .call immediately returns exit 
status 0:

 >>> subprocess.Popen("ps -e|grep gedit", shell=True)
<subprocess.Popen object at 0xb7d06b4c>
 >>> 26066 pts/2    00:00:01 gedit

 >>> subprocess.call("gedit somefilename", shell=True)
0
 >>> # The exit code is produced instantaneously

Interestingly, it works just fine if I use emacs in place of gedit, 
irrespective of whether emacs was running before the subprocess.call 
invocation or not. Is there any way to get it to work with gedit as it 
is with emacs?

I am largely ignorant of the family of modules which subprocess was 
designed to replace, and also of the details of processes on linux. 
(In particular, I've no clue why gedit and emacs behave differently in 
this respect.)

Thanks and best,

Brian vdB


More information about the Tutor mailing list