Как открыть файл со стандартным приложением?

Во-первых (IMO) не слушают людей, которые говорят friend, не полезно. Это полезно. Во многих ситуациях у Вас будут объекты с данными или функциональностью, которые не предназначаются, чтобы быть общедоступными. Это особенно верно для больших кодовых баз со многими авторами, которые могут только быть поверхностно знакомы с различными областями.

СУЩЕСТВУЮТ альтернативы другу спецификатор, но часто они являются громоздкими (классы бетона cpp-уровня / определения типов маскированные) или не надежными (комментарии или соглашения имени функции).

На ответ;

friend спецификатор предоставляет обозначенный доступ класса к защищенным данным или функциональности в классе, делающем друга оператор. Например, в ниже кода любой может попросить у ребенка их имени, но только родительский элемент и ребенок могут изменить имя.

можно взять этот простой пример далее путем рассмотрения более сложного класса, такого как Окно. Довольно вероятно, Окно будет иметь многих функцией/элементами данных, которая не должна быть публично доступна, но необходима связанному классу, такому как WindowManager.

class Child
{
//Mother class members can access the private parts of class Child.
friend class Mother;

public:

  string name( void );

protected:

  void setName( string newName );
};
21
задан Community 23 May 2017 в 12:07
поделиться

6 ответов

os.startfile пока доступен только для Windows, но xdg-open будет доступен на любом клиенте unix, на котором запущен X.

if sys.platform == 'linux2':
    subprocess.call(["xdg-open", file])
else:
    os.startfile(file)
31
ответ дан 29 November 2019 в 06:56
поделиться

в Windows, это работает с os.system ('start ') . На Mac (я знаю, что вы не спрашивали ...) это os.system ('open ')

9
ответ дан 29 November 2019 в 06:56
поделиться

Откройте файл с помощью приложения, которое ваш браузер считает подходящим:

import webbrowser
webbrowser.open_new_tab(filename)
6
ответ дан 29 November 2019 в 06:56
поделиться

В меню «Проект» выберите «Изменить активный». Цель «[...]».

Затем в разделителе сборки убедитесь, что у вас выбрана вся конфигурация, и выполните следующие действия:

  • найдите «Пути поиска заголовков» и укажите, где расположены заголовки FFmpeg;
  • ] найдите «Пути поиска в библиотеке» и укажите, где находятся скомпилированные двоичные файлы статической библиотеки (файлы .a).

Это должно сработать, но в последнем есть еще одна хитрость. Вы можете добавить условие сборки в «Пути поиска библиотеки», чтобы компилятор использовал разные двоичные файлы для разных архитектур, то есть вы можете легко компилировать как для Симулятора, так и для устройства. Инструкция ниже.

3
ответ дан 29 November 2019 в 06:56
поделиться

Спросите у своего любимого Application Framework, как это сделать в Linux.

Это будет работать в Windos и Linux, пока вы используете GTK:

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

где URI - это локальный URL-адрес файла

.
0
ответ дан 29 November 2019 в 06:56
поделиться

Небольшая поправка необходима для того, чтобы решение NicDumZ работало точно так, как указано. Проблема заключается в использовании оператора is. Рабочее решение:

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

Хорошее обсуждение этой темы находится на Есть ли разница между `==` и `is` в Python? .

3
ответ дан 29 November 2019 в 06:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: