Мне интересно, как открывать файлы в таких программах, как «Блокнот» и «Просмотр изображений», в зависимости от расширения файла. Я использую Python 3.3 для Windows. Я провел некоторое исследование, и люди упомянули модуль с именем Image , но когда я пытаюсь импортировать этот модуль, я получаю ImportError. Вот что я до сих пор:
def openFile(): fileName = listbox_1.get(ACTIVE) if fileName.endswith(«.jpg»): fileName.open()
У меня также будут файлы HTML и JSON, которые мне нужно будет открыть в Блокноте.
jfs 24 фев. 2013, в 18:33
Поделиться
Вы, вероятно, должны упомянуть, какую платформу вы используете.
FatalError 24 фев. 2013, в 17:33
спасибо interjay, был ответ на этот вопрос, который я могу использовать
user1816467 24 фев. 2013, в 17:38
Поделиться:
3 ответа
Лучший ответ
Используйте это, чтобы открыть любой файл с программой по умолчанию:
import os def openFile(): fileName = listbox_1.get(ACTIVE) os.system(«start » + fileName)
Если вы действительно хотите использовать определенную программу, например блокнот, вы можете сделать это следующим образом:
Уроки Python / Запуск внешних приложений
import os def openFile(): fileName = listbox_1.get(ACTIVE) os.system(«notepad.exe » + fileName)
Кроме того, если вам нужно выполнить некоторые проверки перед открытием файла, не стесняйтесь их добавлять. Это покажет вам, как открыть файл.
user2032433 24 фев. 2013, в 18:25
Поделиться
os.system() заблокирует вызывающий поток. Что-то из модуля subprocess может быть более подходящим.
FatalError 24 фев.
2013, в 17:37
Мне кажется, что мне нужно добавить имя программы, потому что такие файлы, как json, для которых нет конкретной программы, могут вызвать проблемы.
user1816467 24 фев. 2013, в 17:39
user2032433 24 фев. 2013, в 17:43
да собирался поставить двойную проверку для JSON и HTML, а затем использовать еще, чтобы открыть остальные
user1816467 24 фев. 2013, в 17:45
user1816467 24 фев. 2013, в 18:17
Это похоже только на окна
Jonathan 01 окт. 2015, в 02:06
Показать ещё 4 комментария
В Windows вы можете использовать os.startfile() , чтобы открыть файл с использованием приложения по умолчанию:
import os os.startfile(filename)
Нет shutil.open() , который сделает это кросс-платформенным. Близкое приближение webbrowser.open() :
import webbrowser webbrowser.open(filename)
который может автоматически использовать команду open для OS X, os.startfile() для Windows, xdg-open или аналогичных в Linux.
Если вы хотите запустить конкретное приложение, вы можете использовать subprocess module, например, Popen() позволяет запустить программу, не дожидаясь ее завершения:
import subprocess p = subprocess.Popen([«notepad.exe», fileName]) # . do other things while notepad is running returncode = p.wait() # wait for notepad to exit
Существует много способов использовать модуль subprocess для запуска программ, например subprocess.check_call(command) , пока команда не завершится и не создаст исключение, если команда завершается с помощью ненулевой код выхода.
Запуск внешних приложений с помощью python
jfs 24 фев. 2013, в 18:44
Поделиться
Единственная проблема заключается в том, что у файлов json нет приложения по умолчанию, поэтому появится окно, спрашивающее пользователя, в какой программе его открыть.
user1816467 24 фев. 2013, в 18:39
jfs 24 фев. 2013, в 18:55
Расширение предложения FatalError с примером.
Еще одно преимущество использования subprocessing , а не os.system заключается в том, что он использует одну и ту же синтаксическую кросс-платформу ( os.system для Windows требуется «начало» в начале, тогда как для OS X требуется и «открыть». Не огромное дело, но еще одно, что нужно запомнить).
Открытие файла с помощью subprocess.call .
Все, что вам нужно сделать для запуска программы, — это вызов subprocess.call() и lass в list аргументов, где первый — это путь к программе, а остальные — дополнительные аргументы, которые вы хотите предоставить программе вы запускаете.
Например, для запуска Notepad.exe
import subprocess import os path_to_notepad = ‘C:\Windows\System32\notepad.exe’ path_to_file = ‘C:\Users\Desktop\hello.txt’ subprocess.call([path_to_notepad, path_to_file])
Передача нескольких аргументов и путей одинаково проста. Просто добавьте дополнительные элементы в список.
Запуск с несколькими аргументами
Это, например, запускает JAR файл, используя определенную копию среды выполнения Java.
import subprocess import os current_path = os.getcwd() subprocess.call([current_path + ‘/contents/home/bin/java’, # Param 1 ‘-jar’, #Param2 current_path + ‘/Whoo.jar’]) #param3
Аргумент 1 нацелен на программу, которую я хочу запустить. Аргумент2 предоставляет аргумент этой программе, говорящий, что он будет запускать JAR, и, наконец, Аргумент 3 сообщает целевой программе, где найти файл для открытия.
Zack Yoshyaro 24 фев. 2013, в 18:17
Поделиться
Ещё вопросы
- 1 Шаблон наблюдателя в Android
- 1 График зависимостей. Параллельная обработка
- 1 ASP.net MVC параметры маршрутизации
- 1 Hibernate встраиваемое отображение списка с идентификатором
- 0 li.hover не меняет цвет
- 1 Линейный график D3 JS начинается с 0
- 1 С чего начать для NodeJS?
- 0 Слайдер Jquery не работает на iPad отлично работает в браузере
- 1 Служба Windows с FileWatcher не работает должным образом
- 0 О выравнивании данных конкретной структуры
- 1 Типы предупреждений в Python и MATLAB
- 0 нг-повтор с фильтром и двойной порядок
- 1 NUnit Test с Moq и множеством недостающих данных, это правильно?
- 1 Java 2d Game: рендеринг Q
- 0 Ось даты JQPlot не представляет график
- 0 Разница между php и python mongodb адаптером
- 0 Получить учетные данные базы данных из файла context.xml
- 0 Выбор даты угловой UI, приводящий к значению $ valid, равному false
- 0 Преобразовать этот запрос SQL в запрос mongodb —
- 1 Новые автозаполнения Google вылетали при клике
- 0 Вертикально выровнять div относительно родного брата
- 0 C ++ не может заполнить данные
- 0 Как проверить поле ввода внутри ng-repeat
- 1 Проблемы с конвертацией проекта Android Studio в новый ключ API
- 0 Лучше ли всегда проверять возвращаемое значение PDOStatement :: execute?
- 0 использование поля со списком для заполнения другого поля со списком, чтобы пользователь мог выполнить запрос
- 0 Показать постоянную ссылку в поисковых системах
- 1 Позвоните класс для рецептов Minecraft
- 0 Применять скрипт jquery только к определенным тегам
- 1 Как контролировать отображение окон tkinter Toplevel?
- 1 Вставка Сортировка LinkedList Java
- 1 Компонент сценария служб SSIS — процесс 1 строки из Json в таблицу
- 1 Динамическое вычисление SVG Path для полного круга с помощью JavaScript
- 1 как проверить конструктор экземпляра
- 0 Проблемы вычисления выражения постфикса с более чем двумя операндами
- 0 Как лучше всего вставить данные в таблицу при отправке формы?
- 0 Шаблонный класс C ++ с пользовательским поведением для контейнеров против примитивных типов?
- 1 Как мне проанализировать JSON, у которого экранированы акценты ключей и значений, не влияя на экранирование в значениях полей?
- 1 предложения по разработке JFrame
- 1 Массив для сортировки рекордов
- 1 hdf5storage.write () не сохраняет в указанный путь?
- 1 Доступ к кодам категорий для объектов Index в Pandas
- 1 Список стандартизации Java
- 0 Почему javascript (jquery), если операторы не работают, как операторы php if? И что такое решение?
- 1 Как исправить «android.enableSeparateAnnotationProcessing является экспериментальным и не поддерживается», который регистрируется как предупреждение?
- 1 JSR-303 ошибки проверки на сущности не отображаются в JSP
- 0 Angular Chart.js не отображает диаграмму (отображается легенда)
- 0 Как я могу решить временную сложность следующего кода SQL?
- 0 Настройте Cordova в браузере приложений
- 1 как найти угол определенной точки
Источник: overcoder.net
Работа с файлами в Питоне
Работа с файлами в Питоне представлена широким набором возможностей. Имеются как встроенные инструменты, так и сторонние модули и библиотеки, позволяющие открывать и читать документы, а также записывать в них любую информацию.
Python умеет взаимодействовать со следующими форматами файлов: txt, jpg, csv, json, html, xlsx, pdf и целым рядом других. Удобство заключается в том, что для каждого случая есть отдельный модуль, ускоряющий разработку.
Хорошей практикой считается активация виртуальной среды под конкретную проблему. Другими словами, устанавливать библиотеки нужно не глобально, для всей операционной системы, а для отдельного проекта. В этом помогает виртуальное окружение. Прежде чем переходить к написанию кода, нужно сформировать окружение проекта.
В Windows это делается следующим образом (в нужной папке открываем терминал и прописываем команды):
py -m venv .venv .venvScriptsactivate
Вначале мы создаем папку виртуального окружения «.venv» (имя может быть любым), а затем активируем ее. Теперь все, что мы установим, будет связано только с данным проектом.
В UNIX-системах (Linux, MacOS) команды будут такими:
python3 -m venv .venv source .venvbinactivate
Открытие и чтение текстового файла
Для этого в Питоне имеются следующие конструкции:
- Функция open() – открывает документ в виде файлового объекта;
- Функция close() – закрывает файл и удаляет его из оперативной памяти;
- Контекстный менеджер with (автоматически очищает память после работы с файлом). Его синтаксис показан на рисунке ниже.
- Метод read() – считывает документ полностью или частично в виде строки;
- Метод readline() – построчно выводит содержимое объекта;
- Метод readlines() – формирует из строк файла список.
В папке проекта создадим текстовый документ «econ.txt» с таким наполнением:
Девальвация национальной валюты Индексация пенсий прошла успешно Инфляционные ожидания игроков рынка Экономическая ситуация в регионе
Писать код будем в IDE PyCharm (среду разработки скачиваем с официального сайта).
# Открываем файл в режиме чтения и кодировке UTF-8 txt = open(‘econ.txt’, ‘r’, encoding=’utf-8′) # Выводим на печать первую строку print(txt.readline()) # Удаляем объект из памяти txt.close() # Открываем файл при помощи контекстного менеджера with open(‘econ.txt’, ‘r’, encoding=’utf-8′) as txt: # Печатаем первые 20 символов print(txt.read(20)) # Файл удалится из памяти сам
Девальвация национальной валюты Девальвация национал
Режимы работы с документом
Вторым параметром в функцию open() передается режим работы с файлом. Охарактеризуем их (таблица 1).
Также вкладка получит название «Запись».
Файлы операционной системы
Встроенный модуль os позволяет просматривать содержимое каталогов и редактировать его.
Ознакомимся со следующими функциями:
- mkdir() – создание папки в выбранном каталоге;
- walk() – определение списка всех файлов и директорий внутри заданной и ее подпапках;
- remove() – удаление файла из системы;
- rename() – переименование документа и пр.
Приведем несколько примеров работы с библиотекой.
import os # Создаем в текущей директории папку os.mkdir(‘temp’) # Перемещаемся в нее os.chdir(‘temp’) # Внутри каталога «temp» генерируем 7 текстовых файлов for index in range(7): with open(f’.txt’, ‘w’, encoding=’utf-8′) as file: print(index, file=file) # Переименовываем документ «1.txt» os.rename(‘1.txt’, ‘первый.txt’) # Удаляем файл «3.txt» os.remove(‘3.txt’) # Просматриваем содержимое папки temp print(os.listdir(‘.’))
В результате работы программы в папке «temp» окажутся следующие файлы: ‘0.txt’, ‘2.txt’, ‘4.txt’, ‘5.txt’, ‘6.txt’, ‘первый.txt’.
Редактирование изображений в Питоне
Для работы с картинками используют внешний модуль Pillow. Он позволяет создавать и изменять рисунки, а также накладывать на них текст.
В первую очередь следует установить модуль:
pip install Pillow
Нарисуем квадрат красного цвета с длиной стороны 400 пикселей, применим к нему фильтр размытия, а затем сделаем его черно-белым.
from PIL import Image, ImageDraw, ImageFilter # Создаем рисунок с белым фоном img = Image.new(‘RGB’, (600, 600), ‘white’) draw = ImageDraw.Draw(img) # Помещаем на него красный квадрат (рисунок 3) draw.rectangle((100, 100, 500, 500), fill=’red’) # Делаем размытие (рисунок 4) img = img.filter(ImageFilter.BoxBlur(radius=75)) # Преобразуем картинку в черно-белую (рисунок 5) img = img.convert(‘L’)
Заключение
Как открыть сайт в браузере из скрипта Python
Чтобы открыть сайт в браузере по умолчанию (Windows, macOS, Linux) из скрипта Python, нужно использовать команду webbrowser.open(‘https://ya.ru’) чтобы открыть Яндекс. Не забудьте импортировать модуль webbrowser ( import webbrowser ). Устанавливать ничего не нужно, т.к. этот модуль уже присутствует в стандартной библиотеке Python.
Пример
Вот пример скрипта Python, который открывает следующий сайт https://mmazurenko.com
import webbrowser webbrowser.open(‘https://mmazurenko.com’)
Новая вкладка вашего браузера по умолчанию (Chrome, Edge, Safari, FireFox — любой который установите в ОС по умолчанию) откроется отправленная аргументом функции webbrowser.open()
О модуле Webbrowser
Модуль Webbrowser это часть стандартной библиотеки Python, поэтому можно импортировать его без необходимости что-либо устанавливать дополнительно.
Также можно запустить модуль из командной строки или терминала следующей строкой:
python -m webbrowser -t «https://mmazurenko.com»
Это пригодится когда вдруг понадобится открыть сайт из командной строки ОС или из терминала (Windows, macOS, Linux). Это делает использование Python переносимым и независимым от операционной системы.
Webbrowser open()
Можно задать дополнительные аргументы, чтобы получить больше контроля над тем какая вкладка открывается с помощью нового аргумента функции webbrowser.open() .
webbrowser.open(url, new=0, autoraise=True)
Аргумент new позволяет контролировать окно браузера:
- Если задать new=0 (значение по умолчанию), откроется URL в том же окне браузера.
- Если задать new=1 , откроется новое окно браузера.
- Если задать new=2 , откроется новая вкладка браузера.
Webbrowser Open in New Tab
Простой способ открыть URL в новой вкладке из Python скрипта вызвав webbrowser.open_new_tab() и передать строку с адресом в качестве единственного аргумента.
import webbrowser my_url = ‘http://mmazurenko.com’ webbrowser.open_new_tab(my_url)
Выбор браузера
Можно также передать объекту контроллера заданный браузер вызвав функцию webbrowser.get() и передав в неё тип браузера. Теперь можно вызвать open() или open_new_tab() методы объекта контроллера чтобы открыть URL в определённом браузере.
import webbrowser webbrowser.get(«firefox»).open(«http://mmazurenko.com»)
Вот поддерживаемые типы браузеров:
Имя типа | Имя класса |
‘mozilla’ | Mozilla(‘mozilla’) |
‘firefox’ | Mozilla(‘mozilla’) |
‘netscape’ | Mozilla(‘netscape’) |
‘galeon’ | Galeon(‘galeon’) |
‘epiphany’ | Galeon(‘epiphany’) |
‘skipstone’ | BackgroundBrowser(‘skipstone’) |
‘kfmclient’ | Konqueror() |
‘konqueror’ | Konqueror() |
‘kfm’ | Konqueror() |
‘mosaic’ | BackgroundBrowser(‘mosaic’) |
‘opera’ | Opera() |
‘grail’ | Grail() |
‘links’ | GenericBrowser(‘links’) |
‘elinks’ | Elinks(‘elinks’) |
‘lynx’ | GenericBrowser(‘lynx’) |
‘w3m’ | GenericBrowser(‘w3m’) |
‘windows-default’ | WindowsDefault |
‘macosx’ | MacOSXOSAScript(‘default’) |
‘safari’ | MacOSXOSAScript(‘safari’) |
‘google-chrome’ | Chrome(‘google-chrome’) |
‘chrome’ | Chrome(‘chrome’) |
‘chromium’ | Chromium(‘chromium’) |
‘chromium-browser’ | Chromium(‘chromium-browser’) |
Следует добавить, что если интерпретатор Python не найдет выбранный браузер, то скрипт завершится ошибкой: webbrowser.Error: could not locate runnable browser .
Таким простым способом, можно открыть сайт в браузере из скрипта Python.
P.S. У меня почему-то вариант с выбором браузера работает только при запуске через IDLE (Python). Запуск по двойному клику по скрипту не срабатывает (Windows 10). Хотя простой запуск без выбора браузера работает.
Источник: mmazurenko.com