[Tutor] No file or directory error using subprocess and Popen
Steven D'Aprano
steve at pearwood.info
Mon May 15 03:48:50 EDT 2017
On Sun, May 14, 2017 at 10:57:57PM -0500, Jim wrote:
> I am running this on Mint 18.
> This is the third script I have written to open and position windows in
> workspaces. The first two work, but trying to open ebook-viewe r
> (calibre) with a specific book produces the following error.
> If I run the same command in the terminal it works without an error.
I think your problem is that you're telling subprocess to run a command
called:
ebook-viewer /home/jfb/Documents/eBooks/Javascript/GOOGLE_SHEETS/googlespreadsheetprogramming.epub
with no arguments. What you want is a command called:
ebook-viewer
and a single argument:
/home/jfb/Documents/eBooks/Javascript/GOOGLE_SHEETS/googlespreadsheetprogramming.epub
I think (but haven't tried it) that the simplest way to fix that is to
change the entry in self.programs from:
> self.programs = ['jedit', 'google-chrome', 'doublecmd',
> 'ebook-viewer
> /home/jfb/Documents/eBooks/Javascript/GOOGLE_SHEETS/googlespreadsheetprogramming.epub']
to:
path_to_file = '/home/jfb/Documents/eBooks/Javascript/GOOGLE_SHEETS/googlespreadsheetprogramming.epub'
self.programs = ['jedit',
'google-chrome',
'doublecmd',
['ebook-viewer', path_to_file],
]
and see if that fixes it. (It may not be enough, or the right approach,
but at least you'll get a different error if it is wrong :-)
The difference is that the shell automatically splits things on spaces,
so it sees the space between ebook-viewer and the long path, and treats
the first word as the executable and the second as an argument. But
Python treats the whole string, spaces and quotes included, as the
executable.
--
Steve
More information about the Tutor
mailing list