Georg Schölly
Georg Schölly

Reputation: 126095

How to open a file with the standard application?

My application prints a PDF to a temporary file. How can I open that file with the default application in Python?

I need a solution for

Related

Upvotes: 26

Views: 26608

Answers (6)

Nicolas Dumazet
Nicolas Dumazet

Reputation: 7231

os.startfile is only available for windows for now, but xdg-open will be available on any unix client running X.

if sys.platform == 'linux2':
    subprocess.call(["xdg-open", file])
else:
    os.startfile(file)

Upvotes: 36

neoblitz
neoblitz

Reputation: 99

A small correction is necessary for NicDumZ's solution to work exactly as given. The problem is with the use of 'is' operator. A working solution is:

if sys.platform == 'linux2':
    subprocess.call(["xdg-open", file])
else:
    os.startfile(file)

A good discussion of this topic is at Is there a difference between `==` and `is` in Python?.

Upvotes: 4

jfs
jfs

Reputation: 414149

Open file using an application that your browser thinks is an appropriate one:

import webbrowser
webbrowser.open_new_tab(filename)

Upvotes: 8

u0b34a0f6ae
u0b34a0f6ae

Reputation: 49793

Ask your favorite Application Framework for how to do this in Linux.

This will work on Windos and Linux as long as you use GTK:

import gtk
gtk.show_uri(gtk.gdk.screen_get_default(), URI, 0)

where URI is the local URL to the file

Upvotes: 0

Kai Huppmann
Kai Huppmann

Reputation: 10775

on windows it works with os.system('start <myFile>'). On Mac (I know you didn't ask...) it's os.system('open <myFile>')

Upvotes: 10

pixelbeat
pixelbeat

Reputation: 31708

if linux:
    os.system('xdg-open "$file"') #works for urls too
else:
    os.system('start "$file"') #a total guess

Upvotes: 4

Related Questions