Python код для открытия изображения в браузере? - PullRequest
3 голосов
/ 19 сентября 2010

Я хочу открыть изображение в браузере по умолчанию с Python.Я думал, что это может быть так же просто, как webbrowser.open(path_to_file), но, по крайней мере, в XP вместо этого открывается Windows Picture and Fax Viewer.

Ответы [ 3 ]

4 голосов
/ 19 сентября 2010

Ну, это должно быть так просто (на мой взгляд), но проблема в том, как модуль веб-браузера настраивает браузер по умолчанию в Windows. Из-за этого, когда вы набираете

webbrowser.open(path_to_file)

что тогда называется

os.startfile(url)

, который хорошо работает для URL, но для файлов он использует Windows Picture и Fax Viewer, если вы не связали какую-либо другую программу с типом файла изображения. По сути, если вы используете команду webbrowser.get () для получения реального браузера, все будет хорошо. Вот способ сделать это с помощью Internet Explorer в Windows (который был настроен в модуле webbrowser, чтобы его было сложнее всего получить):

import os,webbrowser
iexplore = os.path.join(os.environ.get("PROGRAMFILES", "C:\\Program Files"),
                        "Internet Explorer\\IEXPLORE.EXE")
browser = webbrowser.get(iexplore)
browser.open(path_to_file)

другие, такие как Firefox, легче получить:

browser = webbrowser.get("firefox")
0 голосов
/ 19 сентября 2010

Похоже, что конкретная установка Windows настроена на использование этой программы просмотра в качестве «браузера по умолчанию» (по крайней мере, для информации с этим типом контента).Чтобы проверить, что происходит, когда (по приглашению Windows cmd.exe) вы набираете start path_to_file?

Если это подтверждает, что это действительно выбор установки, то если вы хотите открыть этот файл с помощью другой программытогда вы не можете в то же время хотеть использовать браузер по умолчанию для этой установки (потому что тот просмотрщик, который вы, очевидно, не хотите открывать, установлен как браузер по умолчанию для этого файла - такВы должны захотеть открыть какой-то другой браузер вместо того, который установлен по умолчанию!).

Если это действительно так, я рекомендую попробовать webbrowser.get , чтобы получитьконтроллер для браузера с заданным именем (например, try c = webbrowser.get('windows-default') - или, если это, насколько это возможно, воспроизводит поведение, которое вам не нужно, вместо этого попробуйте get('firefox')), затем c.open(path_to_file), чтобы открыть файлв вопросе.

0 голосов
/ 19 сентября 2010

Это немного сложный вопрос с текущей информацией. Было бы полезно, если бы вы могли уточнить, какой браузер вы используете и какой формат изображения вы пытаетесь отобразить.

Без этой информации я могу предоставить следующее:

Здесь я предполагаю, что вы будете использовать браузер Firefox и изображение jpg.

import os
os.system('"C:\\Program Files\\ Mozilla Firefox\\Firefox.exe" "path_to_file.jpg"')

Это работает в моей системе WinXP.

Теперь объясним код. модуль os в python имеет несколько отличных инструментов OperatingSystem. os.system выполняет входную строку как команду так же, как если бы вы пытались сделать это из cmd.

Firefox может не входить в переменные пути, и поэтому может потребоваться вызывать его явно из того места, где он живет. Вот почему у меня есть "C: \\ Progam Files ...".

Вы заметите, что у меня есть два набора двойных кавычек во входном параметре для os.system Это потому, что путь к firefox и вашему jpg может содержать пробелы, и командная строка Windows суетится по этому поводу.

Кроме того, вы можете заметить, что в двойных кавычках есть двойной обратный слеш. Это связано с тем, что в Python обратная косая черта является escape-символом и используется для придания особого значения следующему символу (например, «\ t» означает табуляцию и т. Д.). Поэтому, чтобы получить обратную косую черту, нам нужно избежать экранирующей природы обратной косой черты и выполнить «\\».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...