On 21Dec2016 21:54, boB Stepp <robertvst...@gmail.com> wrote:
On Wed, Dec 21, 2016 at 9:37 PM, Jim Byrnes <jf_byr...@comcast.net> wrote:
Python 3.4 on Ubuntu
If I was going to open a libreoffice calc file from the terminal I would go:
libreoffice --calc /home/path/to/myfile.ods.

How would I do this from Python?

My first thought was:

import os
os.system(insert_your_command)

But looking at the documentation
(https://docs.python.org/3/library/os.html#os.system) it says it is
preferable to use the subprocess module with documentation here:
https://docs.python.org/3/library/subprocess.html#replacing-os-system

It makes me wonder if I should go back and revisit some code I wrote
as I used the os.system()approach.  But was this option available in
Py 2.4.4?  I'll have to check.

Subprocess arrived with Python 2.4, so you should be fine.

To my mind the more important thing is to use the "shell=False" version of Popen. os.system() inherently accepts a shell command string, which means you need to hand quote the /home/path/to/myfile.ods. But it is better to pass an array of strings:

 ['libreoffice', '--calc', path_value]

where path_value is a Python variable containing "/home/path/to/myfile.ods" or whatever the path is. This way you don't need to do anything special for, um, "unusual" paths because you're not passing the string _through_ the shell.

BTW, the array form is Popen's default mode; sensibly you need to _ask_ to use a shell string with shell=True, because that is harder and more fragile.

Cheers,
Cameron Simpson <c...@zip.com.au>
_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor

Reply via email to