Python os startfile linux

OS Python

Основы

Введение в тему

Модуль os Python предоставляет возможность взаимодействовать с операционной системой, независимо от того, какая из них установлена на устройстве, что делает программы универсальными.

Этот модуль является частью стандартной библиотеки и не требует установки.

Модуль os предоставляет множество функций, которые можно применять при работе с операционной системой. В этом уроке Вы изучите основные возможности данной библиотеки.

os chdir и os getcwd

Функция os.chdir даёт возможность сменить директорию. При запуске скрипта базовой папкой является та, в которой этот скрипт был запущен.

Узнать полный текущий путь к рабочей папке позволяет функция os.getcwd().

Приведём пример использования обеих функций:

 
import os print("Текущая директория:", os.getcwd()) os.chdir(r"C:\Users\Dushenko\Desktop") print("Новая директория:", os.getcwd()) # Вывод: Текущая директория: C:\Users\Dushenko\AppData\Roaming\JetBrains\PyCharm2021.1\scratches Новая директория: C:\Users\Dushenko\Desktop

Листинг этой программы демонстрирует нам, что была открыта папка по умолчанию в Питоне. После этого директория была изменена при помощи os.chdir(). Затем была вызвана os.getcwd() еще раз, что продемонстрировало изменение директории.

os mkdir и os makedirs

Этот метод предназначен для создания новой папки в текущей. Выкидывает исключение OSError, если папка уже существует.

 
import os print("Содержимое текущей директории:", os.listdir()) os.mkdir('new_scratches') print("Содержимое текущей директории:", os.listdir()) # Вывод: Содержимое текущей директории: ['scratch.py'] Содержимое текущей директории: ['new_scratches', 'scratch.py']

os.makedirs — создаёт директорию, создавая при этом промежуточные директории.

 
import os print("Содержимое текущей директории:", os.listdir()) os.makedirs('new_scratches/example') print("Содержимое текущей директории:", os.listdir()) os.chdir(os.getcwd() + r'\\new_scratches') print("Содержимое директории new_scratches:", os.listdir()) # Вывод: Содержимое текущей директории: ['scratch.py'] Содержимое текущей директории: ['new_scratches', 'scratch.py'] Содержимое директории new_scratches: ['example']

os remove и os rmdir

Эта функция предназначена для удаления файлов.

 
import os print("Содержимое текущей директории:", os.listdir()) os.remove('example.txt') print("Содержимое текущей директории:", os.listdir()) # Вывод: Содержимое текущей директории: ['example.txt', 'scratch.py'] Содержимое текущей директории: ['scratch.py'] 
import os os.mkdir('example') print("Содержимое текущей директории:", os.listdir()) os.rmdir('example') print("Содержимое текущей директории:", os.listdir()) # Вывод: Содержимое текущей директории: ['example', 'scratch.py'] Содержимое текущей директории: ['scratch.py']

os rename src dst

Функция os.rename() применяется для изменения имени файлов или папок.

 
import os os.mkdir('example') print("Содержимое текущей директории:", os.listdir()) os.rename('example', 'пример') print("Содержимое текущей директории:", os.listdir()) # Вывод: Содержимое текущей директории: ['example', 'scratch.py'] Содержимое текущей директории: ['scratch.py', 'пример']

os startfile

Функция os.startfile() для того, чтобы открыть файл в ассоциированной с ним программе. Эта функция аналогична двойному щелчку по файлу в операционной системе.

 
import os print("Содержимое текущей директории:", os.listdir()) os.startfile('example.py') # Вывод: Содержимое текущей директории: ['example.py', 'scratch.py']

В результате выполнения этого кода файл ‘example.py’ откроется в программе по умолчанию. Если Питоновские файлы у Вас ассоциированы со средой обработки, то откроется в ней, иначе этот скрипт исполнится.

os walk

Функция os.walk() возвращает объект-генератор, из которого получают кортежи для каждого каталога переданной файловой иерархии.

Каждый кортеж состоит из трех элементов:

Адрес очередного каталога в виде строки.

В форме списка имена подкаталогов первого уровня вложенности для данного каталога.

В виде списка имена файлов данного каталога.

 
import os print("Содержимое текущей директории:", os.listdir()) walk = os.walk('..') for item in walk: print(item) # Вывод: … ('..\\scratches', [], ['example.py', 'scratch.py']) ('..\\ssl', [], []) …

os path

Модуль os.path включает в себя несколько функции для работы с путями файловой системы. Параметры пути должны быть переданы в формате строк или байтов. Вместо этого модуля рекомендуется использовать модуль pathlib, доступный в стандартной библиотеке Питона начиная с версии 3.4.

os path basename

Функция basename() модуля os.path возвращает базовое имя пути.

 
import os path = os.getcwd() print("Текущая директория:", path) print('Базовое имя пути:', os.path.basename(path)) # Вывод: Текущая директория: C:\Users\Dushenko\AppData\Roaming\JetBrains\PyCharm2021.1\scratches Базовое имя пути: scratches

os path dirname

Функция dirname возвращает ту часть пути, которую составляет каталог пути.

 
import os path = os.getcwd() print("Текущая директория:", path) print('Базовое имя пути:', os.path.dirname(path)) # Вывод: Текущая директория: C:\Users\Dushenko\AppData\Roaming\JetBrains\PyCharm2021.1\scratches Базовое имя пути: C:\Users\Dushenko\AppData\Roaming\JetBrains\PyCharm2021.1

os path exists

Функция exists модуля os.path проверяет, существует ли указанный файл.

 
import os print(r'Существует ли путь C:\Users:', os.path.exists(r'C:\Users')) print(r'Существует ли путь C:\Example:', os.path.exists(r'C:\Example')) # Вывод: Существует ли путь C:\Users: True Существует ли путь C:\Example: False

os path isdir os path isfile

Функции isdir и isfile проверяют присутствие или отсутствие файлов или директорий в указанном пути. isdir проверяет наличие директории, а isfile — файла.

 
import os print(r'C:\Users - это файл?', os.path.isfile(r'C:\Users'), sep='\n') print(r'C:\Users - это папка?', os.path.isdir(r'C:\Users'), sep='\n') # Вывод: C:\Users — это файл? False C:\Users — это папка? True

os path join

В разных операционных системах используется разный разделитель пути. В Виндовс это бекслеш, а в Линукс – слеш. Как же сделать объединение путей в Вашей программе универсальным?

Функция join предназначена для объединения нескольких путей в любой OS.

 
import os path = os.getcwd() print("Текущая директория:", path) print("Добавим 'example':", new_path := os.path.join(path, r"example")) print("Но существует ли этот путь?", os.path.exists(new_path)) # Вывод: Текущая директория: C:\Users\Dushenko\AppData\Roaming\JetBrains\PyCharm2021.1\scratches Добавим 'example': C:\Users\Dushenko\AppData\Roaming\JetBrains\PyCharm2021.1\scratches\example Но существует ли этот путь? False

os path split

Метод split принимает путь и возвращает кортеж, состоящий из базового имени пути и каталога пути.

 
import os path = os.getcwd() print("Текущая директория:", path) print("Базовое имя пути:", os.path.split(path)[1], sep='\n') print("Каталог пути:", os.path.split(path)[0], sep='\n') # Вывод: Текущая директория: C:\Users\Dushenko\AppData\Roaming\JetBrains\PyCharm2021.1\scratches Базовое имя пути: scratches Каталог пути: C:\Users\Dushenko\AppData\Roaming\JetBrains\PyCharm2021.1

Подведем итоги

Модуль os предоставляет множество функций для работы с операционной системой, причём их поведение, как правило, не зависит от ОС, поэтому программы остаются переносимыми. Здесь будут приведены наиболее часто используемые из них.

Будьте внимательны: некоторые функции из этого модуля поддерживаются не всеми ОС.

Источник

Standard way to open a folder window in linux?

What about unix/linux? Is there a standard way to do this or do I have to special case gnome/kde/etc and manually run the appropriate application (nautilus/konqueror/etc)? This looks like something that could be specified by the freedesktop.org folks (a python module, similar to webbrowser , would also be nice!).

3 Answers 3

os.system('xdg-open "%s"' % foldername) 

xdg-open can be used for files/urls also

it's better to use import subprocess / subprocess.Popen(['xdg-open', foldername]) as this avoids quoting problems

this would probably have to be done manually, or have as a config item since there are many file managers that users may want to use. Providing a way for command options as well.

There might be an function that launches the defaults for kde or gnome in their respective toolkits but I haven't had reason to look for them.

You're going to have to do this based on the running window manager. OSX and Windows have a (defacto) standard way because there is only one choice.

You shouldn't need to specify the exact filemanager application, though, this should be possible to do through the wm. I know Gnome does, and it's important to do this in KDE since there are two possible file managers (Konqueror/Dolphin) that may be in use.

I agree that this would be a good thing for freedesktop.org to standardize, although I doubt it will happen unless someone steps up and volunteers to do it.

EDIT: I wasn't aware of xdg-open. Good to know!

Источник

Читайте также:  Btrfs or zfs linux
Оцените статью
Adblock
detector