在浏览器中打开文档

时间:2015-04-15 13:02:25

标签: python python-3.x

我正在使用以下代码(在Cherrypy中)在网络共享上打开文件。 (http://localhost:8080/g?filename=filename.docx) 这似乎工作正常,但是当我打开一个文件,例如Word文档时,Word将在当前浏览器窗口后面打开。 如何打开链接并关注窗口?

import os
import cherrypy
import webbrowser

class StringGenerator(object):
        @cherrypy.expose
        def index(self):
            return "Hello world!"

        @cherrypy.expose
        def g(self, filename):
            webbrowser.open(r'\\computer\share\filename.docx', new=2, autoraise=True)

if __name__ == '__main__':
        cherrypy.quickstart(StringGenerator())

2 个答案:

答案 0 :(得分:1)

您可以使用pywin32库。例如:

import win32com.client
import win32gui
import win32process

hwnd = win32gui.GetForegroundWindow()
_, pid = win32process.GetWindowThreadProcessId(hwnd)
shell = win32com.client.Dispatch("WScript.Shell")

shell.AppActivate('filename.docx')

答案 1 :(得分:0)

documentation个州(部分):

  

请注意,在某些平台上,尝试使用此函数打开文件名可能会起作用并启动操作系统的关联程序。但是,既不支持也不便携。

该评论的最后一部分是问题。实际上,在查看源代码时,似乎在某些系统上调用了一个特定于系统的命令,该命令按文件类型打开默认程序。由于Word文档的默认程序是MS Word,因此该文件将在该程序中打开。由于网页的默认程序是浏览器,因此将在默认浏览器中打开网页。

但是,您可以告诉webbroswer使用特定程序。有关如何执行此操作,请参阅this answer